How to concatenate array with delimeter?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Laurensius Christian Danuwinata
il 22 Dic 2015
Commentato: Laurensius Christian Danuwinata
il 23 Dic 2015
a1 = [0 32];
c1 = ([31 63]);
d1 = unique([a1 c1]);
first = ['[' num2str(d1(1)) ':' num2str(d1(2)) ']'];
second =['[' num2str(d1(3)) ':' num2str(d1(4)) ']'];
preresult= [ first second];
result = ['{' preresult '}'];
%result = {[0:31][32:63]}
How can I make this code worked more generally, for any values of a1 and c1? I've tried with this :
newArray =[];
for i=1:length(a1)
newArray(length(newArray)+1)= [ '[' num2str(a1(i)) ':' num2str(c1(i)) ']' ]
end
But it said Subscripted assignment dimension mismatch. Can someone help me maybe? :(
1 Commento
jgg
il 22 Dic 2015
Are you sure this is doing what you want it to? The matrix [0 32] is not the same as the matrix [0:32]?
Risposta accettata
Guillaume
il 22 Dic 2015
The bit pattern is not made up of strings, you're barking up the wrong tree. It is a cell array of double vectors and it's simply:
result = arrayfun(@(s, e) s:e, a1, c1, 'UniformOutput', false);
Or if arrayfun is too dauting for you, with a loop:
result = cell(size(a1));
for iter = 1:numel(a1);
result{iter} = a1(iter) : c1(iter);
end
1 Commento
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Structures 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!