迭代向量的所有子集

时间:2014-09-09 23:53:54

标签: matlab for-loop vector

我想为每个(非空)'子矢量'运行代码。一些向量v。例如:

v=1:3;             % [1,2,3]
Pv = subsets(v);   % { [1,2,3], [1,2], [1,3], [2,3], [1], [2], [3], [] }

for s in Pv
    % do things depending on each s in Pv;
end

但我不知道matlab中的任何subsets(...)。怎么办呢?

我意识到这是非常低效的,但我这样做是出于指导目的,而不是效率。

1 个答案:

答案 0 :(得分:0)

for ii=0:2^length(v)
    idx = logical( dec2bin( ii, length(v) )'-'0' );
    % do things to v(idx) 
end

请务必检查v(idx)是否为空。