matlab 迭代向量的所有子集[复制]

g6baxovj  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(170)

这个问题在这里已经有答案

How to find all permutations (with repetition) in MATLAB?(4个答案)
8年前就关闭了。
社区正在评估是否在4天前重新讨论这个问题。
我想为某个向量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(...)。如何做到这一点呢?
我意识到这是非常低效的,但我这样做是为了教育目的,而不是为了效率。

c6ubokkw

c6ubokkw1#

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

记得检查v(idx)是否为空。

相关问题