2010-05-01 17 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