MATLAB Answers

How to convert an array to a one-line string?

248 views (last 30 days)
At first I have two 3x3 arrays written in string form:
A = '[2, 3, 4; 5, 1, 8; 9, 1, 4]'
B = '[7, 5, 3; 5, 2, 3; 7, 1, 5]'
The first issue is to multiple these two matrices after converting them to numerical with str2num function. This part is clear and done. But after this operation, I need to convert the result matrix back to string (or char vector) and print it to a cell in app designer:
num2str(str2num(A) * str2num(B))
ans =
3×10 char array
'57 20 35'
'96 35 58'
'96 51 50'
The problem here is the result matrix has 3 rows, which leads to an error when printing it to a cell. MATLAB wants the variable to be a character vector (not a character array) when print in a cell. So I want this matrix to be transformed into the form that:
'57 20 35; 96 35 58; 96 51 50'
or
'57 20 35 96 35 58 96 51 50'
Thanks in advance.

  0 Comments

Sign in to comment.

Accepted Answer

Geoff Hayes
Geoff Hayes on 27 May 2019
Ercument - you could try using rehape to convert your numeric matrix into a single row
C = str2num(A) * str2num(B);
D = num2str(reshape(C', 1, []))
which should create the string
'57 20 35 96 35 58 96 51 50'

  3 Comments

Ercument Kalkan
Ercument Kalkan on 27 May 2019
I have tried it but it does not leave a space between rows when stacking them horizontally. I get:
'57 20 3596 35 5896 51 50'
Geoff Hayes
Geoff Hayes on 27 May 2019
Please show your code. This example seems to work
>> A = [1 2 3; 4 5 6; 7 8 9];
>> X = num2str(reshape(A', 1, []))
Ercument Kalkan
Ercument Kalkan on 27 May 2019
Actually it's not an error. It is the behavior of code. It pastes the entire row at the end of the previous row without a whitespace. Thanks for help.

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Products


Release

R2017a