Removing certain type of repeating cell
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Stephen23
il 6 Gen 2022
Modificato: Stephen23
il 6 Gen 2022
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
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!