How to put cell array in sprintf?
119 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Mr M.
am 26 Mai 2015
Bearbeitet: Jan Siegmund
am 31 Aug. 2020
Data is in cell array: {1,2,3,4,5} sprintf('%d,%d,%d,%d,%d ',???);
0 Kommentare
Akzeptierte Antwort
Jos (10584)
am 29 Mai 2015
Use comma-separated list expansion. And you need to specify the format only once (see help fprintf)
A = {1 2 3 4}
sprintf('%d ',A{:})
0 Kommentare
Weitere Antworten (3)
Jan Siegmund
am 25 Aug. 2020
Bearbeitet: Jan Siegmund
am 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 Kommentare
Stephen23
am 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
am 31 Aug. 2020
Bearbeitet: Jan Siegmund
am 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!
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!