2010-11-15 1 views
3

Je tente d'imprimer des colonnes comparatives pour comparer des éléments ayant le même indice de deux ou trois vecteurs différents. Je vais illustrer ma question avec l'exemple suivantMATLAB: Impression de colonnes comparatives pour des éléments de différents vecteurs

>> a = [5.47758 7.46578 3.45323] 
a = 

5.4776 7.4658 3.4532 

>> b = [5.65432 4.45678 2.34789] 

b = 

5.6543 4.4568 2.3479 

Maintenant, si j'écris

>> sprintf('%.2f %.2f\n',a, b) 

-je obtenir la réponse suivante Matlab

ans = 
5.48 7.47 
3.45 5.65 
4.46 2.35` 

Mais ce que la façon dont je voudrais voir cette présentation des valeurs est la suivante:

ans = 
5.48 5.65 
7.47 4.46 
3.45 2.35 

Comment utiliser la fonction sprintf (ou une autre fonction ou manière) pour obtenir la représentation ci-dessus? Merci.

+1

Voir cette question connexe sur la façon dont SPRINTF/FPRINTF/NUM2STR gérer avec une telle entrée: http://stackoverflow.com/questions/2366680/how-can--create-a-cell-of-strings-out-of -a-meshgrid-in-matlab – Amro

Répondre

3

Vous pouvez résoudre ce problème par concatenatinga et b dans un 2-en-3 argument d'entrée de la matrice:

>> sprintf('%.2f %.2f\n',[a; b]) 

ans = 

5.48 5.65 
7.47 4.46 
3.45 2.35 

La fonction SPRINTF fonctionne en réutilisant la chaîne de formatage encore et qu'il traverse (dans la colonne ordre) les éléments de chacun des arguments d'entrée dans l'ordre où ils sont entrés. C'est pourquoi dans votre exemple toutes les valeurs de a sont imprimées, puis toutes les valeurs de b, au lieu d'entrelacer les valeurs de a et b.

0

Si vous êtes juste « l'impression » à l'écran, vous pouvez taper sur la console Matlab (ou « Command Window »):


a = [5.47758 7.46578 3.45323]; 
b = [5.65432 4.45678 2.34789]; 

c = [a',b']; % Transposing each row vector into a column vector before forming a matrix 

c = 

    5.4776 5.6543 
    7.4658 4.4568 
    3.4532 2.3479 

Ce sera plus facile lorsque vous triez la matrice par lignes, par exemple, en utilisant la commande 'sortrows' (Voir le doc sur 'sortrows' pour son utilisation: "help sortrows" ou "doc sortrows").

+2

Bienvenue sur SO, YT. J'ai remarqué que vous continuez à publier de nouveaux comptes. Il est probablement préférable d'utiliser seulement 1 compte qui a toutes vos réponses en un seul endroit. Un modérateur peut vous aider avec cela si vous le souhaitez. Aussi, en ajoutant "Y.T." ou un lien vers votre blog à la fin de votre message n'est pas nécessaire ou généralement acceptable sur SO. Votre nom est déjà sur votre message dans le coin inférieur droit, et un lien vers votre blog est déjà dans votre profil. Je suggère également à tous les nouveaux utilisateurs de donner une bonne lecture à la [FAQ] (http://stackoverflow.com/faq). ;) – gnovice

Questions connexes