How to create a cell of strings from a vector?

I have the vector
x = [ 10.027 20.35 50.1 100.002 ]
which I would like to convert to the cell
x = { '10', '20', '50', '100' }.
How can I do this? I know I can use sprintf('%.0f\n', x) to get the formatting I want, but not how to turn the outputs into a cell of strings.

 採用された回答

Oleg Komarov
Oleg Komarov 2012 年 9 月 10 日
編集済み: Oleg Komarov 2012 年 9 月 10 日

0 投票

Encapsulate sprintf() into arrayfun():
arrayfun(@(in) sprintf('%.0f', in), x,'un',0)

4 件のコメント

K E
K E 2012 年 9 月 10 日
Thanks for the speedy and correct answer.
Sean de Wolski
Sean de Wolski 2012 年 9 月 10 日
If you don't mind leading spaces:
cellstr(num2str(x','%.0f'))
  • pluses: no arrayfun
  • deltas: leading spaces
K E
K E 2012 年 9 月 10 日
Very useful, thanks. I am more likely to recall cellstr next time.
Tom
Tom 2012 年 9 月 10 日
If you add left justify to the format it removes the leading spaces:
cellstr(num2str(x','%-0.0f'))

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

その他の回答 (2 件)

Jan
Jan 2012 年 9 月 10 日
編集済み: Jan 2012 年 9 月 10 日

1 投票

Perhaps this is faster:
Str = sprintf('%.0f*', x);
C = regexp(Str, '*', 'split');
Tom
Tom 2012 年 9 月 10 日

1 投票

Based on Sean De Wolski's answer:
cellstr(num2str(x','%-0.0f'))

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by