我正在編寫GUI,其中載入包含測量數據的.csv
文件。該文件被很好地定義:Matlab:讀取可能有錯誤.csv
<variable>(<unit>),<variable>(<unit>),...
0.005,NaN,...
,我處理它在Vars
,Units
和Data
:當數據部分被損壞,則會出現
A=importdata('foo.csv',',');
Data=A.data;
[Vars,Units]=ProcessHeaderLine(A.colheaders);
問題 - 有字符串而不是數在細胞:
<variable>(<unit>),<variable>(<unit>),...
0.005,"- N/A - ",...
在這種情況下,需要很長的時間來運行importdata
功能,並引發錯誤:
Error using importdata (line 136)
Unable to open file.
Error in <.m file> (line 384)
A=importdata('foo.csv'],',');
難道還有比try-catch
更快的方式與處理報頭和數據,並能夠處理數據containig串「細胞的能力這種方法「?
MATLAB非常適合處理純數字數據文件。對於字符串數據來說並不是那麼好,並且沒有一個MATLAB讀取器能夠很好地處理可以將記錄類型從一個記錄更改爲下一個記錄的數據。你的例子特別令人煩惱,因爲它顯示不平衡的報價!如果您的「字符串」數據幾乎總是相同的,並且它是實際數據不可用時的標記,那麼最好的解決方案是預處理數據文件。將字符串(在這種情況下,「N/A」)替換爲對您的應用程序無效的數字值(可能是'-1'?也許是'999999'?)。 – gariepy
@gariepy字符串是'「 - N/A - 「'實際上,我可以發現問題,並且我可以半自動地修復它,但是我是唯一一個(在實驗室中)瘋狂地追蹤它並面對它的人。萬無一失的密封黑盒...... – Crowley
其中一個測試文件 - 錯誤的 - 包含整列中的字符串,問題是我不知道爲什麼*有'N/A'標誌關於函數設計我不知道在第二行查找字符串是否足以決定如何處理文件。 – Crowley