2010-05-01 5 views
1

Quelle serait l'équivalent Matlable format de la Fortran Matlab équivalents

write(1,'("Speed, resistance, power",3f8.2)')(a(i),i=1,3) 

J'ai essayé

a = [10. 20. 200.] 
fprintf(unit1,'a = 3%8.1e',a) 

mais je suis toujours des problèmes avec elle (le tout formatage de la sortie de Matlab).


Modifier pour Kenny: pour les valeurs d'une donnée ci-dessus, cela donnerait (dans une nouvelle ligne):

Speed, resistance, power 10.00 20.00 200.00 
+0

Quelle est la sortie attendue? Alors que les gens qui ne connaissent pas Fortran peuvent aussi aider. – kennytm

+0

@Kenny - donnée ci-dessus. En outre, fortran n'est plus un acronyme (pour les 30 dernières années donner ou prendre :) – Rook

Répondre

3

J'utilise 1 pour fileID d'écrire au fenêtre de commande, et je mets une nouvelle ligne à la fin, car il est plus joli, mais cela ne devrait reproduire ce que vous voulez

a = [10,20,200;20,30,300]; 

fprintf(1,'Speed, resistance, power%8.2f%8.2f%8.2f\n',a') 

Speed, resistance, power 10.00 20.00 200.00 
Speed, resistance, power 20.00 30.00 300.00 

EDIT

Supposons un tableau a de dimensions inconnues. Supposons en outre que nous voulons FPRINT ligne par ligne

a = [10,20,200;20,30,300]; 

%# find number of columns 
nCols = size(a,2); 

%# create format string for fprintf. Use repmat to replicate the %8.2f's 
fmtString = ['Speed, resistance, power',repmat('%8.2f',1,nCols),'\n']; 

%# print 
fprintf(1,fmtString,a') 

Speed, resistance, power 10.00 20.00 200.00 
Speed, resistance, power 20.00 30.00 300.00 

Note: Cette affiche toutes les lignes d'un après l'autre sur la même ligne (merci, @JS).

fprintf('Speed, resistance,power') 
fprintf('%8.2f',a') 
fprintf('\n') 
+0

Okey, c'est solution patch, mais que faire si un tableau a 10000 éléments? (Je viens de donner trois comme exemple parce que je n'avais pas envie de composer des numéros). – Rook

+0

@Idigas: Si c'est un tableau 1000x3, ce n'est pas un problème (voir modifier). Si c'est un tableau 1000x1000, vous devez utiliser 'repmat' pour répéter les chaînes de format. – Jonas

+0

@Jonas - Aw, merde. Je vois que je vais avoir un problème avec ça. Le fait est que, souvent, je ne sais pas combien d'éléments seront dans un tableau, donc je mets simplement dans le spécificateur FORMAT un nombre dont je suis sûr qu'il est plus grand que le nombre maximum d'éléments dans un tableau. Dans tous les cas, mes tableaux ont dans tous les cas plus d'éléments que je voudrais mettre manuellement dans fprintf. N'y a-t-il pas de spécificateur de format répété? Aussi, je ne vois pas comment la commande repmat est utile pour moi ... en fonction de l'aide, c'est pour dupliquer des parties du tableau. – Rook