2010-05-01 54 views
1

什么是MATLAB中的等价物MATLAB的FORTRAN的格式当量

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

我已经试过

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

,但我仍然有它(全MATLAB输出格式化的东西)的麻烦。


编辑肯尼:为的是上面给出的,它会给值(新行):

Speed, resistance, power 10.00 20.00 200.00 
+0

预期输出是什么?所以那些不了解FORTRAN的人也可以提供帮助。 – kennytm 2010-05-01 21:04:01

+0

@ Kenny - 上面给出的。此外,fortran不再是一个缩写(过去30年给予或采取:) – Rook 2010-05-01 21:24:46

回答

3

我使用1 FILEID写入命令窗口,我把一个换行符到底是因为它的漂亮,但这应该复制你想要什么

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 

编辑

假设一个未知尺寸的数组a。进一步假设我们要fprint它逐行

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 

注意:这将打印在同一线路上的其他后一(感谢,@JS)的所有行。

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

Okey,这是修补解决方案,但如果一个数组有10000个元素呢? (我只举了三个​​例子,因为我不想编号)。 – Rook 2010-05-01 21:51:22

+0

@Idigas:如果它是一个1000x3的阵列,这没有问题(请参阅编辑)。如果它是1000x1000阵列,则需要使用'repmat'来重复格式字符串。 – Jonas 2010-05-01 22:01:16

+0

@Jonas - 噢,废话。我看到我会遇到问题。问题是,我经常不知道数组中有多少元素,所以我只是将FORMAT指定符放入一个数字中,我确信它大于数组中元素的最大数量。在任何情况下,我的数组在所有情况下都有更多的元素,然后我想手动放在fprintf中。是否没有重复格式说明符?另外,我不明白repmat命令在这方面对我有多大帮助......根据帮助,它是用于复制数组的一部分。 – Rook 2010-05-01 22:10:27