How to concatenate array with delimeter?
1 view (last 30 days)
Show older comments
Laurensius Christian Danuwinata
on 22 Dec 2015
Commented: Laurensius Christian Danuwinata
on 23 Dec 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 Comment
jgg
on 22 Dec 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]?
Accepted Answer
Guillaume
on 22 Dec 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
More Answers (0)
See Also
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!