繁体   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