2017-07-24 64 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