图片缩略图

nchoosecrit(年代,乐趣)

version 2.0.0.0 (4.06 KB) by 乔斯(10584)
返回满足特定条件的子集(=集合元素的组合)

759下载

更新2018年2月06

查看许可协议

W = nchoosecrit(S, FUN)返回满足特定条件的集合S(称为子集)的一个或多个元素的组合。此标准由函数FUN指定。FUN是一个函数句柄,该函数接受一个输入参数并返回逻辑标量值。
W是行向量的单元格数组。W的每个细胞都有一个组合C的S,其中FH(C)为真。

[W, IX] = nchoosecrit(S, FUN)也返回索引,这样S(IX{k})等于W{k}。
最大情况下,S有2^N-1个可能的子集(N是S的元素数)。因此,这个数字随着N的增加而迅速增长。

S可以是一个单元格数组,然后W的每个单元格将包含一个单元格数组。

例子:
找出将op和为6的子集
Nchoosecrit ([1 2 3 4 5 6], @(x) sum(x)==6)
% -> {[1 2 3], [2 4], [1 5], [6]}

找到包含James或Bob的4人或4人以上的子组,
但不是两者都有!
S ={“鲍勃”“汤姆”“乔”“比尔”的詹姆斯,“亨利”};全体%
%的标准1:
Fh1 = @(x) numel(x) >= 4;
%的标准2
Fhname = @(x,y) any(strncmp(y,x,numel(y))); / /输入y
fh2中= @ (x) xor (fhname (x,“詹姆斯”),fhname (x,“鲍勃”));
% 2个标准组合:
Fhcomb = @(x) fh1(x) && fh2(x);
[W, IX] = nchoosecrit(S, fhcomb)
S(IX{2}), W{2} % check

注:
-如果S包含非唯一的元素(例如S = [1 1 2]), nchoosecit将
返回非唯一的细胞。换句话说,nchoosecreit处理所有元素
S是唯一的。可以使用nchoosecrit(UNIQUE(S))来避免这种情况。
—输出与
Wtemp = nselect (S);cellfun(cellfun(Wtemp, fh));
但不创建临时数组Wtemp(可能非常大)。

参见nchoosek, perms
nchoose, permn, allcomb在文件交换

引用作为

乔斯(10584)(2021)。nchoosecrit(年代,乐趣)(//www.tianjin-qmedu.com/matlabcentral/fileexchange/40301-nchoosecrit-s-fun), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2017b
与任何版本兼容
平台的兼容性
窗户 macOS Linux
确认

启发:nchoose

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!