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 Data Types 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!
