2015-03-02 71 views
0

我正嘗試構建一個使用Matlab處理經濟數據的財務應用程序。我想要加載的文件在csv文件中,並且是這種格式爲'1222.3'的雙數字。到目前爲止,我只是在處理一個維度,我可以將數據加載到矢量中。Matlab字符串加倍(str2double)

問題是數據以字符串格式加載到矢量中。要改變所有的載體導入我用str2double(矢量)雙格式,但數字到載體這樣結束:

1222.3 - > 1.222
153.4 - > 0.1534

我試圖乘以矢量每100(矢量。* 100),但沒有工作。

有什麼想法?

+0

你確定你沒有誤讀變量內容嗎?我的猜測是MATLAB正在打印1.222e + 03 – dasdingonesin 2015-03-02 13:34:23

+0

如果你發佈了一個完整的但是最簡單的例子,你會做的更好。將問題隔離爲問題非常困難。 – kkuilla 2015-03-02 13:35:48

+0

如果向量中的某個地方有一個比其他地方大1000倍的數字,它將全部獲得e3後綴。你可以通過輸入'x(1)'來輕鬆檢查,其中'x'是你的向量。那應該顯示正確的價值。 – 2015-03-02 13:39:55

回答

0

Matlab的自動提取一些共同的因素出來的數值向量,這混淆了我很多次我自己。給出公因子的線很容易錯過,尤其是對於大的矢量,因爲它顯示在頂部。

如果我定義與你給這兩個數,MATLAB顯示它給我以下列方式的載體:

Matlab number formatting

它拔出因子的1000,行1.0e+03 *所示。

+0

就是這樣!我的矢量太大,所以我從來沒有達到頂峯。 – ThomasDE 2015-03-02 20:52:52

0

如果你的矢量分量足夠大,MATLAB將以指數格式打印數字。

>> a = 1234.56 

a = 

    1.2346e+03 

的數字也列於科學記數法在工作區中的瀏覽器:

exponential format in workspace browser

可以打印使用例如以十進制形式的數字fprintf

>> fprintf('%5.3f\n',a) 
1234.560 
>> 

作爲一個側面說明,1.222 * 100≠1222 ...