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

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]

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 31 Mai 2016
A_cell = cellstr(str2num(A));

5 Kommentare

Maryam Hamrahi
Maryam Hamrahi am 31 Mai 2016
Bearbeitet: Maryam Hamrahi am 31 Mai 2016
Many thanks for the answer. I used your code and I got the following error.
Error using str2num (line 32)
Requires string or character array input.
Error in (line 2) A_cell = cellstr(str2num(A))
A_cell = cellstr(num2str(A));
I don't know why I keep getting that reversed...
Thank you very much.
Irina Ciortan
Irina Ciortan am 14 Apr. 2021
Bearbeitet: Irina Ciortan am 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
Look at the correction posted in May 2016

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (5)

Iskander
Iskander am 30 Nov. 2017
Bearbeitet: Iskander am 30 Nov. 2017
Use undocumented function:
sprintfc('%d',A)

5 Kommentare

This is the best implementation I have seen. Very nice!
This needs to be higher ! Thanks !
Awesome! Thanks for this extremely concise method. As Patrick said, this needs to be higher!
This functionality is basically the same as the documented function compose. Try
compose('%d',A)
Note: compose requires R2016b or later.

Melden Sie sich an, um zu kommentieren.

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

3 Kommentare

but it'll work only on row vector
This can work for a general matrix using
strsplit(num2str(A(:)'))
and reshaping as necessary.
This is correct answer and worked for me.

Melden Sie sich an, um zu kommentieren.

Karolis Poskus
Karolis Poskus am 14 Okt. 2020
Using one function:
compose('%g',A)

3 Kommentare

best answer
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.

Melden Sie sich an, um zu kommentieren.

Rubén Vázquez Amos
Rubén Vázquez Amos am 27 Feb. 2024

1 Stimme

Wouldn't string(A) work?

3 Kommentare

DGM
DGM am 27 Feb. 2024
Bearbeitet: DGM am 27 Feb. 2024
I suppose it does, but to be fair, that wouldn't have been an option in early 2016.
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 am 27 Feb. 2024
Bearbeitet: DGM am 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.

Melden Sie sich an, um zu kommentieren.

WinCento99
WinCento99 am 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 Kommentar

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'}

Melden Sie sich an, um zu kommentieren.

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by