2014-09-09 3 views
1

일부 벡터 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(...)을 모르겠습니다. 어떻게 할 수 있습니까?

나는 이것이 매우 비효율적이라는 것을 알고 있지만, 나는 능률이 아닌 교육적인 목적으로 그것을하고있다.

+0

아이디어 : '2^length (v), length (v)'차원의 행렬을 만들고 그 길이까지 모든 이진수로 각 행을 채운 다음 행을 색인으로 사용하십시오. – enthdegree

+0

또 다른 가능한 중복 : http://tackoverflow.com/questions/4165859/matlab-generate-all-possible-combinations-of-the-elements-of-some-vectors#4169488 – bla

+0

모든 순열을 모든 부분 집합에 대해 반복합니다. ... – enthdegree

답변

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

v(idx)이 비어 있지 않은지 확인하십시오.

관련 문제