How to put cell array in sprintf?

 Risposta accettata

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{:})

Più risposte (3)

Dasharath Gulvady
Dasharath Gulvady il 29 Mag 2015

1 voto

 a={1,2,3,4,5};
 sprintf('%d,%d,%d,%d,%d',a{:});
Doug
Doug il 29 Mag 2015

0 voti

mycell = {1,2,3,4,5};
s = sprintf('%d%d%d%d%d', mycell{:})
Jan Siegmund
Jan Siegmund il 25 Ago 2020
Modificato: Jan Siegmund il 31 Ago 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 Commenti

Simpler and more efficient:
>> tmp = [var;num];
>> fprintf('%s = %d\n',tmp{:})
a = 1
b = 2
c = 3
d = 4
e = 5
Jan Siegmund
Jan Siegmund il 31 Ago 2020
Modificato: Jan Siegmund il 31 Ago 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!

Accedi per commentare.

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by