Matrix to string, filled with zeros

5 views (last 30 days)
Dylan den Hartog
Dylan den Hartog on 17 May 2021
Commented: dpb on 17 May 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]

Accepted Answer

dpb
dpb on 17 May 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 Comment
dpb
dpb on 17 May 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

Sign in to comment.

More Answers (1)

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

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!