How I could convert matrix (double) to cell array of string

228 views (last 30 days)
I have the following matrix and I want to convert it in cell array of string.
Please help me with this issue.
A=[-1; -3; -5; -5; -6; -7; -9; -3; -7; -9; -8; -9; -10]

Accepted Answer

Walter Roberson
Walter Roberson on 31 May 2016
A_cell = cellstr(str2num(A));
  5 Comments
Irina Ciortan
Irina Ciortan on 14 Apr 2021
Edited: Irina Ciortan on 14 Apr 2021
This is not correct. Str2num converts strings to numeric format, but the question was the other way around. The correct and best answer should be https://se.mathworks.com/matlabcentral/answers/286544-how-i-could-convert-matrix-double-to-cell-array-of-string#answer_331847

Sign in to comment.

More Answers (5)

Iskander
Iskander on 30 Nov 2017
Edited: Iskander on 30 Nov 2017
Use undocumented function:
sprintfc('%d',A)
  5 Comments
Neil Patel
Neil Patel on 15 Nov 2018
This functionality is basically the same as the documented function compose. Try
compose('%d',A)

Sign in to comment.


Benny Abramovsky
Benny Abramovsky on 7 Aug 2018
This one worked for me:
strsplit(num2str(A))

Karolis Poskus
Karolis Poskus on 14 Oct 2020
Using one function:
compose('%g',A)
  3 Comments
Walter Roberson
Walter Roberson on 10 Apr 2021
This, that you say is "best answer", is the same solution that was posted 23 months earlier at https://www.mathworks.com/matlabcentral/answers/286544-how-i-could-convert-matrix-double-to-cell-array-of-string#comment_637933
Also, at the time of the original question, compose() did not exist: the original question was May 2016, which was R2016a, but compose() was introduced as part of the string operations in R2016b.

Sign in to comment.


Rubén Vázquez Amos
Rubén Vázquez Amos on 27 Feb 2024
Wouldn't string(A) work?
  3 Comments
Rubén Vázquez Amos
Rubén Vázquez Amos on 27 Feb 2024
I did test it and it worked, but wasn't sure about 2016 compatibility so I figured I'd put it as a tentative answer.
DGM
DGM on 27 Feb 2024
Edited: DGM on 27 Feb 2024
As far as I know, string() was introduced in R2016b, but I don't know that it's early behavior was the same as it is today. I think it's safe to say the legacy options don't matter to most readers, and they'd probably be fine with your answer. The only reason I bring it up is to explain why it hadn't been mentioned at the time the question was asked.

Sign in to comment.


WinCento99
WinCento99 on 13 Jul 2021
Hi all,
If we define A as a matrix
A = [1 , 2 ; 3 , 4]
And we want to create a cell string matrix, do we do the following?
B = cellstr(num2str(A))
for i = 1:length(B)
C(i,:) = strsplit(B{i,1}) ;
end
Is there a way to ignore the loop?
  1 Comment
Walter Roberson
Walter Roberson on 13 Jul 2021
A = [1 , 2 ; 3 , 4]
A = 2×2
1 2 3 4
B = cellstr(string(A))
B = 2×2 cell array
{'1'} {'2'} {'3'} {'4'}

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!