How to put cell array in sprintf?
Show older comments
Data is in cell array: {1,2,3,4,5} sprintf('%d,%d,%d,%d,%d ',???);
Accepted Answer
More Answers (3)
Dasharath Gulvady
on 29 May 2015
1 vote
a={1,2,3,4,5};
sprintf('%d,%d,%d,%d,%d',a{:});
Doug
on 29 May 2015
0 votes
mycell = {1,2,3,4,5};
s = sprintf('%d%d%d%d%d', mycell{:})
Jan Siegmund
on 25 Aug 2020
Edited: Jan Siegmund
on 31 Aug 2020
If using multiple different cells:
%% Edited
% var = {'a','b','c','d','e'};
% num = {1,2,3,4,5};
% s = strjoin(cellfun(@(v,n)sprintf('%s = %d',v,n),var,num,'UniformOutput',false),'; ');
Stephen's comment for a proper solution
2 Comments
Stephen23
on 25 Aug 2020
Simpler and more efficient:
>> tmp = [var;num];
>> fprintf('%s = %d\n',tmp{:})
a = 1
b = 2
c = 3
d = 4
e = 5
Jan Siegmund
on 31 Aug 2020
Edited: Jan Siegmund
on 31 Aug 2020
Oh, when sprintf and fprintf reported:
>> s = sprintf('%s = %d\n',var,num)
Error using sprintf
Function is not defined for 'cell' inputs.
I thougth sprintf and fprintf were not defined for cell arrays.
Edited: (And I did not think about the cell unpacking {:}
Anyways, yours is definitely the better solution!
Categories
Find more on Characters and Strings 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!