Hi there,
Just wondering how to convert some matrix string (such as A = '[1,2,3,4,5]') into a numerical matrix (like [1,2,3,4,5]) so that it displays when entered into matlab like,
ans =
1 2 3 4 5
instead of
Columns 1 through 5
1.0000 2.0000 3.0000 4.0000 5.0000
Cheers,
Samuel

 Akzeptierte Antwort

madhan ravi
madhan ravi am 10 Okt. 2020
Bearbeitet: madhan ravi am 10 Okt. 2020

1 Stimme

Normally str2num() is not suggested:
Wanted = sscanf(A(2:end-1), '%d').' % edited after sir Walter’s comment to exclude []

5 Kommentare

The [] and comma interfere with sscanf unless you program for them
A = '[1,2,3,4,5]'; sscanf(A(2:end-1), '%d,')
madhan ravi
madhan ravi am 10 Okt. 2020
Ah, thank you sir Walter, I just typed straight away.
Samuel Lee
Samuel Lee am 10 Okt. 2020
Thank you Madhan and Walter, this is cool. How do you adapt the code if there were no commas seperating the values? E.g. A = '[1 0.2 0.4 0.5 0.6]'
Cheers
A = '[1 0.2 0.4 0.5 0.6]'; sscanf(A(2:end-1), '%f')
ans = 5×1
1.0000 0.2000 0.4000 0.5000 0.6000
If the problem is that you might have commas or might not then:
A = '[1 0.2, 0.4, 0.5 0.6]'; sscanf(A(2:end-1), '%f%*[, ]')
ans = 5×1
1.0000 0.2000 0.4000 0.5000 0.6000
Samuel Lee
Samuel Lee am 10 Okt. 2020
Cheers Walter, this is awesome. I couldn't quite work it out from the page (https://au.mathworks.com/help/matlab/ref/sscanf.html).
Thank you!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Ameer Hamza
Ameer Hamza am 10 Okt. 2020
Bearbeitet: Ameer Hamza am 10 Okt. 2020

1 Stimme

A = '[1,2,3,4,5]';
A = str2num(A);
Result
>> A
A =
1 2 3 4 5
Another alternative which is generally not recommended, but can be useful here
A = '[1,2,3,4,5]';
A = eval(A);

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by