How to create a cell of strings from a vector?

2 views (last 30 days)
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.

Accepted Answer

Oleg Komarov
Oleg Komarov on 10 Sep 2012
Edited: Oleg Komarov on 10 Sep 2012
Encapsulate sprintf() into arrayfun():
arrayfun(@(in) sprintf('%.0f', in), x,'un',0)
  4 Comments
K E
K E on 10 Sep 2012
Very useful, thanks. I am more likely to recall cellstr next time.
Tom
Tom on 10 Sep 2012
If you add left justify to the format it removes the leading spaces:
cellstr(num2str(x','%-0.0f'))

Sign in to comment.

More Answers (2)

Jan
Jan on 10 Sep 2012
Edited: Jan on 10 Sep 2012
Perhaps this is faster:
Str = sprintf('%.0f*', x);
C = regexp(Str, '*', 'split');

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

Categories

Find more on Large Files and Big Data in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!