add blank spaces in cell array
17 views (last 30 days)
Show older comments
I have the following array
ar=
0 1 0 0 0 0 0 0 0 0
0 0 0 3 0 0 0 0 0 0
0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 0 3 0
4 0 0 0 0 0 0 0 0 0
And I would like to create a 5x1 cell array C like this one:
C =
5×1 cell array
{' 0 1 0 0 0 0 0 0 0 0'}
{' 0 0 0 3 0 0 0 0 0 0'}
{' 0 0 0 0 0 0 2 0 0 0'}
{' 0 0 0 0 0 0 0 0 3 0'}
{' 4 0 0 0 0 0 0 0 0 0'}
That is with 10 blank spaces at the beginning of each row. I tried this:
fmt=repmat(' % 11.1i',1,10);
fmt=[' ' fmt4(2:end) '\n'];
rew=num2str(ar,fmt4)
tes=num2cell(ar)
C = cellfun(@cell2mat,num2cell(tes,2),'un',0)
And I get this:
C =
5×1 cell array
{'0 1 0 0 0 0 0 0 0 0'}
{'0 0 0 3 0 0 0 0 0 0'}
{'0 0 0 0 0 0 2 0 0 0'}
{'0 0 0 0 0 0 0 0 3 0'}
{'4 0 0 0 0 0 0 0 0 0'}
Is there a way to add the blank spaces in cell array C?
1 Comment
Jan
on 6 Nov 2018
What does "That is with 10 blank spaces at the beginning of each row" mean for values with more than 1 digit?
Accepted Answer
Jan
on 6 Nov 2018
Edited: Jan
on 6 Nov 2018
ar = [0,1,0,0,0,0,0,0,0,0; ...
0,0,0,3,0,0,0,0,0,0; ...
0,0,0,0,0,0,2,0,0,0; ...
0,0,0,0,0,0,0,0,3,0; ...
4,0,0,0,0,0,0,0,0,0];
fmt = repmat('%11d', 1, size(ar,2));
% Either:
C = sprintfc(fmt, ar); % Unfortunately not documented
% Or:
D = compose(fmt, ar) % Working since R2016b
0 Comments
More Answers (1)
Stephen23
on 6 Nov 2018
Edited: Stephen23
on 6 Nov 2018
>> ar = [0,1,0,0,0,0,0,0,0,0;0,0,0,3,0,0,0,0,0,0;0,0,0,0,0,0,2,0,0,0;0,0,0,0,0,0,0,0,3,0;4,0,0,0,0,0,0,0,0,0]
ar =
0 1 0 0 0 0 0 0 0 0
0 0 0 3 0 0 0 0 0 0
0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 0 3 0
4 0 0 0 0 0 0 0 0 0
>> C = num2cell(reshape(sprintf('%11d',ar.'),[],size(ar,1)).',2);
>> C{:}
ans = 0 1 0 0 0 0 0 0 0 0
ans = 0 0 0 3 0 0 0 0 0 0
ans = 0 0 0 0 0 0 2 0 0 0
ans = 0 0 0 0 0 0 0 0 3 0
ans = 4 0 0 0 0 0 0 0 0 0
0 Comments
See Also
Categories
Find more on Cell Arrays 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!