gpt4 book ai didi

Matlab:只读 .csv 文件中的标题行

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:29 27 4
gpt4 key购买 nike

假设有一个 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}

然后,我使用 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

读取这个文件:

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);

注意,fscanf读取的数据需要转置(我用transpose来强调这一点,而不是')。输出:

"Weight"
"Size"
"Count"
1 2 3
4 5 6
7 8 9
10 11 12

关于Matlab:只读 .csv 文件中的标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8414300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com