2013-08-23 70 views
-1

損失級聯矩陣I具有列矩陣說temp1中浮點數以下面的格式(顯示用格式長克這種方式):和另一個NX3矩陣在MATLAB的結果的精度

1334320224.86767 
1334320225.03415 
1334320225.20064 

(TEMP2 )如下所示:

25.59989 -17.82167 31.19241 
25.17558 -17.59459 30.71448 
25.18788 -17.39987 30.61347 

我將2個矩陣列逐列連接,temp = [temp1 temp2]; 產生的矩陣是:

1.334305e+09 24.40084 -17.98591 30.31327 
1.334305e+09 24.23554 -17.68831 30.00396 
1.334305e+09 25.31328 -17.61529 30.83927 

我想要的結果矩陣有temp1中的原有精度。我該怎麼做呢?我已經嘗試格式化長克。寫入dlmwrite並將精度設置爲%.5f的文件會導致第一列的小數部分歸零。

+0

有這種感覺,你正在做的事情錯了,我沒有看到MATLAB搞亂了值精度。也許'dlmwrite'不會完全精確地寫數組,但我沒有檢查過。但是,由於連接而改變你的值是很奇怪的...... – Werner

+0

這適用於我:'dlmwrite('FILENAME.txt',temp,'precision','%5f','newline','pc')''。請確保你的例子說明了這個問題。 (也許嘗試當列1處於其最大值時是否出現,而其他列在其最小值時是否出現) –

+0

您不明白這不是精度的損失,而只是顯示器的變化。數字仍然正確存儲。 – 2013-08-23 12:47:55

回答

1

首先,格式長g爲我工作。我使用Matlab_R2013a在Mac上:

>> temp = [temp1 temp2] 

temp = 

      1334320224.86767     25.59989     -17.82167     31.19241 
      1334320225.03415     25.17558     -17.59459     30.71448 
      1334320225.20064     25.18788     -17.39987     30.61347 

但是一個簡單的解決方案:sprintf('%f ',temp),就會失去矩陣查閱像格式化,但你可以看到你想要的。輸出:

>> sprintf('%f ',temp) 

ans = 

1334320224.867670 1334320225.034150 1334320225.200640 25.599890 25.175580 25.187880 -17.821670 -17.594590 -17.399870 31.192410 30.714480 30.613470 

如果reaaaally需要看到你指出,你可能想要做的:

>> arrayfun(@(in) sprintf('%f',in),temp,'Uniform',0) 

ans = 

    '1334320224.867670' '25.599890' '-17.821670' '31.192410' 
    '1334320225.034150' '25.175580' '-17.594590' '30.714480' 
    '1334320225.200640' '25.187880' '-17.399870' '30.613470' 
+0

好的,我應該提到它,但是卻認爲它沒有區別:這只是518944行矩陣的3行。它可能是一些內存問題或其他與大型矩陣有關的問題? – user1984537

+0

@ user1984537是的,似乎是這樣。也許別人可以向你解釋發生了什麼,可惜我不能。但請檢查您是否可以減少離羣值的順序,以便它們適合合理範圍並檢查問題是否已經結束。然後,你需要做的就是映射異常值。如果您知道只有第一列例如來自特定訂單的異常值,那麼刪除這個數量級並在必要時添加。不知道這是否是一個適用的解決方案,但無論如何... – Werner