簡體   English   中英

MATLAB編碼器支持的csvread函數

[英]csvread function supported by MATLAB coder

我有一個包含csvread調用的MATLAB腳本,該調用從csv文件中讀取數據。 現在,我正在嘗試使用MATLAB Coder將我的MATLAB腳本編譯為C。 但是, csvread 不是 C代碼生成受支持函數的成員

我發現唯一從文件讀取功能是fread ,它僅讀取二進制文件。 有沒有一種方法可以使用fread讀取csv文件,或者有什么解決辦法?

示例MATLAB腳本:

data = csvread('data.csv');

樣本csv文件:

1
2
3
4

當然,您可以使用fread讀取.csv文件,只需要自己處理即可。 假設您有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 Coder支持。 b現在是一個包含文本1, 2, 3, 4的字符串。

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

但是,您可能會發現它比您想象的要容易,因為csvread的正則表達式必須涵蓋任何.csv文件的一般情況(該文件可能包括文本字段以及數字以及帶引號且可以包含引號內的逗號,甚至還有Unicode文本)。 如果您只有數字,逗號和空格,則不要太難-逐個字母地遍歷文本,每次找到逗號時都停止,並到目前為止str2double一部分調用str2double

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM