ski*_*kip 11 csv file-io matlab
假设有一个myfile.csv,第一行包含变量名,后面包含十进制数.在Matlab中我想分别读取标题行和十进制数.到目前为止,我一直在做以下提取标题行:
fid = fopen('myfile.csv');
a = textscan(fid,'%s','Delimiter','\n');
b = a{1,1};
fclose(fid);
c = textscan(b,'%s','Delimiter',',');
d = c{1}
Run Code Online (Sandbox Code Playgroud)
然后,我使用csvread命令提取文件的数字部分.但应该有一个(更简单)的方法来做到这一点!首先,我不想读取整个文件(如同a = textscan(fid,'%s','Delimiter','\n');)只提取第一行.其次,使用7行代码看起来是错误的 - 可以用更少的代码完成吗?
我会感谢任何建设性的建议.
使用 打开文件fopen,使用 读取标题行textscan,使用 读取十进制数字fscanf,fclose最后调用 - 总共只有 4 行:) 输入文件示例:
Weight,Size,Count
1,2,3
4,5,6
7,8,9
10,11,12
Run Code Online (Sandbox Code Playgroud)
读取该文件:
fid = fopen('myfile.csv', 'r');
header = textscan(fid, '%[^,],%[^,],%[^,\r\n]', 1);
data = transpose(fscanf(fid, '%g,%g,%g\n', [3, Inf]));
fclose(fid);
for i = 1 : 3; disp(['"' cell2mat(header{i}) '"']); end;
disp(data);
Run Code Online (Sandbox Code Playgroud)
注意,读取的数据fscanf需要转置(我用写transpose而不是强调这一点')。输出:
"Weight"
"Size"
"Count"
1 2 3
4 5 6
7 8 9
10 11 12
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18379 次 |
| 最近记录: |