How can I create a cell array whose elements reflect a length based on a given input vector?
    2 views (last 30 days)
  
       Show older comments
    
    Dwight Schrute III
 on 3 May 2019
  
    
    
    
    
    Commented: Dwight Schrute III
 on 4 May 2019
            For example, I want to repeat the character 'b' a specified number of times based on a vector; let's say the vector is [3 2 4]. My desired output would be a 1x3 cell array with elements:
{'bbb'}  {'bb'}  {'bbbb'}
Ideally, I'd like to implement this without a loop. I'm sure there's some nifty Matlab function that accomplishes this, but I haven't been able to find it. repmat and repelem don't appear to be relevant for this particular application (unless I'm using them incorrectly).
Thank you.
1 Comment
  KALYAN ACHARJYA
      
      
 on 4 May 2019
				Members, how can avoid this for loop?
in=[3 2 4];
result={};
for i=1:length(in)
    result{i}=repmat('b',1,in(i));
end 
Accepted Answer
  Stephen23
      
      
 on 4 May 2019
        In one line:
>> V = [3,2,4];
>> S = 'b';
>> C = mat2cell(repmat(S,1,sum(V)),1,V);
>> C{:}
ans = bbb
ans = bb
ans = bbbb
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

