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

142 visualizzazioni (ultimi 30 giorni)
Maryam Hamrahi il 31 Mag 2016
Modificato: DGM il 27 Feb 2024
I have the following matrix and I want to convert it in cell array of string.
A=[-1; -3; -5; -5; -6; -7; -9; -3; -7; -9; -8; -9; -10]
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Walter Roberson il 31 Mag 2016
A_cell = cellstr(str2num(A));
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Irina Ciortan il 14 Apr 2021
Modificato: Irina Ciortan il 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
Walter Roberson il 14 Apr 2021
Look at the correction posted in May 2016

Accedi per commentare.

### Più risposte (5)

Iskander il 30 Nov 2017
Modificato: Iskander il 30 Nov 2017
Use undocumented function:
sprintfc('%d',A)
##### 5 CommentiMostra 3 commenti meno recentiNascondi 3 commenti meno recenti
Neil Patel il 15 Nov 2018
This functionality is basically the same as the documented function compose. Try
compose('%d',A)
Walter Roberson il 16 Nov 2018
Note: compose requires R2016b or later.

Accedi per commentare.

Benny Abramovsky il 7 Ago 2018
This one worked for me:
strsplit(num2str(A))
##### 3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Syed Hussain il 12 Set 2018
This can work for a general matrix using
strsplit(num2str(A(:)'))
and reshaping as necessary.
Irina Ciortan il 14 Apr 2021
This is correct answer and worked for me.

Accedi per commentare.

Karolis Poskus il 14 Ott 2020
Using one function:
compose('%g',A)
##### 3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Kyuhwa Lee il 10 Apr 2021
Walter Roberson il 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.

Accedi per commentare.

Rubén Vázquez Amos il 27 Feb 2024
Wouldn't string(A) work?
##### 3 CommentiMostra 1 commento meno recenteNascondi 1 commento meno recente
Rubén Vázquez Amos il 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 il 27 Feb 2024
Modificato: DGM il 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.

Accedi per commentare.

WinCento99 il 13 Lug 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 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Walter Roberson il 13 Lug 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'}

Accedi per commentare.

### Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by