Matrix to string, filled with zeros

3 vues (au cours des 30 derniers jours)
Dylan den Hartog
Dylan den Hartog le 17 Mai 2021
Commenté : dpb le 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]

Réponse acceptée

dpb
dpb le 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 commentaire
dpb
dpb le 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

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by