Filter löschen
Filter löschen

Matrix to string, filled with zeros

1 Ansicht (letzte 30 Tage)
Dylan den Hartog
Dylan den Hartog am 17 Mai 2021
Kommentiert: dpb am 17 Mai 2021
I have a question about transforming a matrix. I have a matrix that looks something like this:
A = [9998; 9999; 0; 1; 2; ...... 9997; 9998; 9999; 0; 1; 2]
I want to turn this matrix into a string which contains always 4 elements:
B = ['9998'; '9999'; '0000'; '0001'; '0002'; ..... '9997'; '9998'; '9999'; '0000'; '0001'; '0002']
Then I also want to create a matrix (preferably without a loop) that adds 1 every time the number jumps down from 9999 to 0:
C = [0; 0; 1; 1; 1; 1; 1; 1; ..... 1; 1; 1; 2; 2; 2]

Akzeptierte Antwort

dpb
dpb am 17 Mai 2021
>> string(num2str(A,'%04d')).'
ans =
1×11 string array
"9998" "9999" "0000" "0001" "0002" "9997" "9998" "9999" "0000" "0001" "0002"
>> cumsum([0 diff(A.')<0])
ans =
0 0 1 1 1 1 1 1 2 2 2
>>
  1 Kommentar
dpb
dpb am 17 Mai 2021
compose was what was trying to remember was called but didn't at the time...I'd suggest a combination solution of Matt's in lieu of num2str

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 17 Mai 2021
Bearbeitet: Matt J am 17 Mai 2021
B=compose('%.4d',A);
C=cumsum( A(2:end)==0 & A(1:end-1)==9999 );

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by