MATLAB编码器支持的csvread函数

时间:2017-07-24 18:33:40

标签: matlab csv readfile matlab-coder

我有一个MATLAB脚本,其中包含一个\s调用来读取csv文件中的数据。现在我正在尝试使用MATLAB Coder将我的MATLAB脚本编译成C语言。但是,对于C代码生成,csvreadnot a member of the supported functions

我发现的唯一从文件函数读取的是csvread,它只读取二进制文件。有没有办法使用fread来读取csv文件,还是有办法解决这个问题?

示例MATLAB脚本:

fread

示例csv文件:

data = csvread('data.csv');

2 个答案:

答案 0 :(得分: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 Coder支持所有这些命令。 b现在是一个包含文字1, 2, 3, 4

的字符串

您现在需要处理该字符串以从逗号之间提取数字。这是csvread中MATLAB Coder不支持的部分,因为在csvread内它使用正则表达式,MATLAB Coder不支持。

但是,您可能会发现它比您想象的要容易,因为csvread中的正则表达式必须涵盖任何.csv文件的一般情况(可能包含文本字段为以及引号中的数字和字段,并且引号内可以包含逗号,甚至可以包含Unicode文本。如果你只有数字,逗号和空格,不应该太难 - 只需逐个字符地逐字逐句,每次找到一个逗号时停止,并在部分上调用str2double远。

答案 1 :(得分:1)

fscanf 受 MATLAB Coder 支持并将行转换为数字:

fid = fopen('data.csv');
data = fscanf(fid, '%d');
fclose(fid);

读取示例中的单列。