2010-10-20 5 views
2

J'utilise MATLAB et j'ai quelques problèmes pour mettre en forme la sortie d'une matrice. À l'heure actuelle, la matrice ressemble à:MATLAB formatage d'une matrice

Columns 1 through 7 

    4  6  5  1  0  0  0 
    7  8  4  0  1  0  0 
    6  5  9  0  0  1  0 
    1  0  0  0  0  0 -1 
    0  1  0  0  0  0  0 
    0  0  1  0  0  0  0 

    Columns 8 through 9 

    0  0 
    0  0 
    0  0 
    0  0 
    -1  0 
    0 -1 

Y at-il un moyen d'obtenir toute la matrice pour montrer « plus » ensemble, quelque chose comme ceci:

1  0  0  0  0  0 
0  1  0  0  0  0 
0  0  1  0  0  0 
0  0  0 -1  0  0 
0  0  0  0 -1  0 
0  0  0  0  0 -1 

Répondre

3

Pour personnaliser la sortie, vous pouvez essayer quelque chose comme:

x = randi(100, [6,9]); 

for i=1:size(x,1) 
    fprintf('%d\t',x(i,:)); 
    fprintf('\n'); 
end 

23 44 26 23 9 49 53 37 10 
18 19 41 12 27 58 24 99 27 
23 91 60 30 81 24 49 4 34 
44 98 27 32 3 46 63 89 68 
32 44 61 43 93 97 68 92 14 
93 12 72 51 74 55 40 80 73 

Ou plus facilement, vous pouvez utiliser la fonction NUM2STR:

x = randi([-10 10], [6 9]); 
num2str(x) 

ans = 
2 1 7 8 9 -1 -1 9 5 
6 8 -3 9 -4 3 8 4 8 
-2 -9 -7 4 -9 -7 -8 -6 7 
1 6 -10 9 6 1 -1 1 -8 
9 -3 10 -5 -9 3 3 8 -7 
8 -6 4 8 5 -10 -4 1 -7 
+0

Salut, Merci pour la réponse. Cependant, existe-t-il un moyen de conserver le format 'court' lors de l'utilisation de la route fprintf? – ajj

+0

Je ne suis pas sûr de ce que vous voulez dire par là? – Amro

Questions connexes