2015-10-06 66 views
0

這裏是從我的代碼的提取物,其中我使用fprintf中寫結果到命令窗口:Matlab的:fprintf中OUPUTS兩次和不完全出於某種原因

... 
hold off; 
X_H2S = (F_H2S_0-F_H2S)/F_H2S_0; 
X_COS = (F_COS_0-F_COS)/F_COS_0; 
X_CS2 = (F_CS2_0-F_CS2)/F_CS2_0; 
plot(W,X_H2S,W,X_COS,W,X_CS2) 

fprintf('\nFinal conversions (percent):\n\t\tH2S: %f\n\t\tCOS: %f\n\t\tCS2: %f\n\n',100*X_H2S(size(X_H2S)),100*X_COS(size(X_COS)),100*X_CS2(size(X_CS2))) 

fprintf('Pressure drop: %f to %f (%f percent)',P_0,P(size(P)),100*(P_0-P)/P_0) 


format longG 
%format compact 
length = size(fs, 2); 
... 

出於某種原因,它輸出如下:

Final conversions (percent): 
     H2S: 24.838056 
     COS: 0.000000 
     CS2: 99.997968 


Final conversions (percent): 
     H2S: 0.000000 
     COS: 98.985525 
     CS2: 0.000000 

Pressure drop: 129099.000000 to 128217.024848 (129099.000000 percent)Pressure drop: 0.000000 to 0.000000 (0.000000 percent)Pressure drop: 0.000000 to 0.000000 (0.000000 percent)Pressure drop: 0.000000 to 0.000002 (0.000003 percent)Pressure drop: 0.000005 to 0.000020 (0.000034 percent)Pressure drop: 0.000049 to 0.000196 (0.000343 percent)Pressure drop: 0.000490 to 0.001555 (0.002621 percent)Pressure drop: 0.003687 to 0.007620 (0.011556 percent)Pressure drop: 0.015495 to 0.019436 (0.030585 percent)Pressure drop: 0.041755 to 0.052945 (0.064154 percent)Pressure drop: 0.081088 to 0.098064 (0.115084 percent)Pressure drop: 0.132146 to 0.149250 (0.166397 percent)Pressure drop: 0.183585 to 0.200973 (0.218403 percent)Pressure drop: 0.235875 to 0.253389 (0.270943 percent)Pressure drop: 0.288536 to 0.310239 (0.331999 percent)Pressure drop: 0.353815 to 0.375693 (0.397640 percent)Pressure drop: 0.419669 to 0.445698 (0.471872 percent)Pressure drop: 0.498193 to 0.524642 (0.533730 percent)Pressure drop: 0.542828 to 0.551935 (0.561052 percent)Pressure drop: 0.570178 to 0.579314 (0.596511 percent)Pressure drop: 0.613741 to 0.631004 (0.648300 percent)Pressure drop: 0.665627 to 0.683177 (

任何想法爲什麼以及如何修復它?

+0

在這兩種情況下,你都在創建多個字符串,因爲你的變量是數組。我還認爲你的意思是刪除過長的數字,查看這個'%f'語法,例如'%3.5f'在小數點前5位後給出3個數字。 – Adriaan

回答

1

你的論點是向量。如果我這樣做:

>> fprintf('Number: %f\n',rand(2,1)) 
Number: 0.957507 
Number: 0.964889 

我觀察到和你一樣的行爲。你認爲你只打印出一個的原因是因爲你調用size,但size返回一個1x2的數組,分別包含數組中的行數和列數。

+0

啊,謝謝!因此,我將使用行計數來檢查 – Mierzen

+0

修復它。謝謝! – Mierzen

1

它取決於您提供給fprintf函數的值。看到這個輸出:

>> fprintf('\nFinal conversions (percent):\n\t\tH2S: %f\n\t\tCOS: %f\n\t\tCS2: %f\n\n',[1,1],[1,1],[1,1]) 

Final conversions (percent): 
     H2S: 1.000000 
     COS: 1.000000 
     CS2: 1.000000 


Final conversions (percent): 
     H2S: 1.000000 
     COS: 1.000000 
     CS2: 1.000000