2017-07-24 67 views
0

我有一個MATLAB腳本,其中包含一個csvread調用以讀取來自csv文件的數據。現在我試圖用MATLAB編碼器將我的MATLAB腳本編譯成C語言。但是,用於C代碼生成的csvreadnot a member of the supported functionsMATLAB編碼器支持csvread函數

我發現的唯一從文件函數讀取的是fread,它只能讀取二進制文件。有沒有辦法使用fread來讀取一個csv文件或有任何解決方法嗎?

樣品MATLAB腳本:

data = csvread('data.csv'); 

文件示例:

1 
2 
3 
4 

回答

3

當然,你可以在一個.csv文件,fread閱讀,你只需要自己處理它。假設您有myfile.csv,其中包含文字1, 2, 3, 4

>> fid = fopen('myfile.csv','r'); 
>> a = fread(fid, 'char')' 
a = 
    49 44 32 50 44 32 51 44 32 52 13 10 
>> b = char(a) 
b = 
1, 2, 3, 4 
>> fclose(fid); 

MATLAB編碼器支持所有這些命令。 b現在是一個包含文本1, 2, 3, 4的字符串。

您現在需要處理該字符串以從逗號之間提取數字。這是csvread的部分,MATLAB編碼器不支持,因爲在csvread它使用正則表達式,這是MATLAB編碼器不支持。

然而,你可能會發現比你想象的更容易,因爲內csvread的正則表達式必須支付任何.csv文件一般情況下(其中可能包括文本字段,以及數字和領域被引用並且在引號內可以包含逗號,甚至可以包含Unicode文本)。如果你只有數字,逗號和空格,不應該太難 - 只需逐個字符遍歷文本,每次找到逗號時停止,並在目前爲止的部分中調用str2double