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

39 ビュー (過去 30 日間)
Maryam Hamrahi
Maryam Hamrahi 2016 年 5 月 31 日
編集済み: DGM 2024 年 2 月 27 日
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]

採用された回答

Walter Roberson
Walter Roberson 2016 年 5 月 31 日
A_cell = cellstr(str2num(A));
  5 件のコメント
Irina Ciortan
Irina Ciortan 2021 年 4 月 14 日
編集済み: Irina Ciortan 2021 年 4 月 14 日
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
Walter Roberson 2021 年 4 月 14 日
Look at the correction posted in May 2016

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

その他の回答 (5 件)

Iskander
Iskander 2017 年 11 月 30 日
編集済み: Iskander 2017 年 11 月 30 日
Use undocumented function:
sprintfc('%d',A)
  5 件のコメント
Neil Patel
Neil Patel 2018 年 11 月 15 日
This functionality is basically the same as the documented function compose. Try
compose('%d',A)
Walter Roberson
Walter Roberson 2018 年 11 月 16 日
Note: compose requires R2016b or later.

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


Benny Abramovsky
Benny Abramovsky 2018 年 8 月 7 日
This one worked for me:
strsplit(num2str(A))
  3 件のコメント
Syed Hussain
Syed Hussain 2018 年 9 月 12 日
This can work for a general matrix using
strsplit(num2str(A(:)'))
and reshaping as necessary.
Irina Ciortan
Irina Ciortan 2021 年 4 月 14 日
This is correct answer and worked for me.

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


Karolis Poskus
Karolis Poskus 2020 年 10 月 14 日
Using one function:
compose('%g',A)
  3 件のコメント
Kyuhwa Lee
Kyuhwa Lee 2021 年 4 月 10 日
best answer
Walter Roberson
Walter Roberson 2021 年 4 月 10 日
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.

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


Rubén Vázquez Amos
Rubén Vázquez Amos 2024 年 2 月 27 日
Wouldn't string(A) work?
  3 件のコメント
Rubén Vázquez Amos
Rubén Vázquez Amos 2024 年 2 月 27 日
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 2024 年 2 月 27 日
編集済み: DGM 2024 年 2 月 27 日
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.

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


WinCento99
WinCento99 2021 年 7 月 13 日
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 件のコメント
Walter Roberson
Walter Roberson 2021 年 7 月 13 日
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'}

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

カテゴリ

Help Center および File ExchangeCalendar についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by