Removing certain type of repeating cell
조회 수: 2 (최근 30일)
이전 댓글 표시
Not familiar with coding. I want to remove certain type of repeating cells. I am using this code to find all combinations that equal a given sum:
function C = Conc(N)
P= [1:5 1:5 1:5]
C = {};
for ii = 1:numel(P)
nestfun(P(ii),P(ii+1:end))
end
function nestfun(t,V)
if sum(t)<5
for jj = 1:numel(V)
nestfun([t,V(jj)],V(jj+1:end))
end
elseif sum(t)==5
C{end+1} = t;
end
end
end
This will result in say [1 1 1 2] [1 2 1 1] [1 3 1] [1 3 1] [3 1 1]. How would i remove the repeating [1 3 3]? In this project [1 1 1 2] is different than [1 2 1 1], but [1 3 1] is the same as [1 3 1].
Thank you.
댓글 수: 0
채택된 답변
Stephen23
2022년 1월 6일
편집: Stephen23
2022년 1월 6일
A direct, intuitive, and reasonably efficient approach is to simply check the existing cell array content:
out = Conc(5)
function C = Conc(N)
P = [1:5,1:5,1:5];
C = {};
for ii = 1:numel(P)
nestfun(P(ii),P(ii+1:end))
end
function nestfun(t,V)
if sum(t)<5
for jj = 1:numel(V)
nestfun([t,V(jj)],V(jj+1:end))
end
elseif sum(t)==5
for k = 1:numel(C)
if isequal(C{k},t)
return
end
end
C{end+1} = t;
end
end
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!