How to put cell array in sprintf?

119 ビュー (過去 30 日間)
Mr M.
Mr M. 2015 年 5 月 26 日
編集済み: Jan Siegmund 2020 年 8 月 31 日
Data is in cell array: {1,2,3,4,5} sprintf('%d,%d,%d,%d,%d ',???);

採用された回答

Jos (10584)
Jos (10584) 2015 年 5 月 29 日
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{:})

その他の回答 (3 件)

Dasharath Gulvady
Dasharath Gulvady 2015 年 5 月 29 日
 a={1,2,3,4,5};
 sprintf('%d,%d,%d,%d,%d',a{:});

Doug
Doug 2015 年 5 月 29 日
mycell = {1,2,3,4,5};
s = sprintf('%d%d%d%d%d', mycell{:})

Jan Siegmund
Jan Siegmund 2020 年 8 月 25 日
編集済み: Jan Siegmund 2020 年 8 月 31 日
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 件のコメント
Stephen23
Stephen23 2020 年 8 月 25 日
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 2020 年 8 月 31 日
編集済み: Jan Siegmund 2020 年 8 月 31 日
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!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeString Parsing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by