我有一个MATLAB脚本,其中包含一个\s
调用来读取csv文件中的数据。现在我正在尝试使用MATLAB Coder将我的MATLAB脚本编译成C语言。但是,对于C代码生成,csvread
为not a member of the supported functions。
我发现的唯一从文件函数读取的是csvread
,它只读取二进制文件。有没有办法使用fread
来读取csv文件,还是有办法解决这个问题?
示例MATLAB脚本:
fread
示例csv文件:
data = csvread('data.csv');
答案 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);
读取示例中的单列。