gpt4 book ai didi

matlab - 在 MATLAB 中导入 CSV 文件的最快方法

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

我编写了一个脚本,将其输出保存到 CSV 文件以供以后引用,但是用于导入数据的第二个脚本需要花费大量时间才能将其读回。

数据格式如下:

Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9

其中标题位于最左侧的列,数据值占据该行的其余部分。一个主要困难是每个测试项目的数据值数组的长度可能不同。我会将其保存为结构,但我需要能够在 MATLAB 环境之外对其进行编辑,因为有时我必须在未安装 MATLAB 的计算机上删除错误数据行。所以说真的,我的问题的第一部分是:我应该以不同的格式保存数据吗?

问题的第二部分:我试过了 importdata , csvread , 和 dlmread ,但我不确定哪个最好,或者是否有更好的解决方案。现在我正在使用我自己的脚本,使用循环和 fgetl ,这对于大文件来说非常慢。有什么建议吗?

function [data,headers]=csvreader(filename); %V1_1
fid=fopen(filename,'r');
data={};
headers={};
count=1;
while 1
textline=fgetl(fid);
if ~ischar(textline), break, end
nextchar=textline(1);
idx=1;
while nextchar~=','
headers{count}(idx)=textline(1);
idx=idx+1;
textline(1)=[];
nextchar=textline(1);
end
textline(1)=[];
data{count}=str2num(textline);
count=count+1;
end
fclose(fid);

(我知道这可能是写得很糟糕的代码 - 我是一名工程师,而不是程序员,请不要对我大喊大叫 - 但欢迎提出任何改进建议。)

最佳答案

如果您可以用 NaN 填充文件,可能会使数据更易于阅读当您的第一个脚本创建它时的值:

Item1,1,2,3,NaN
Item2,4,5,6,7
Item3,8,9,NaN,NaN

或者您甚至可以只打印空字段:

Item1,1,2,3,
Item2,4,5,6,7
Item3,8,9,,

当然,为了正确填充,您需要事先知道所有项目的最大值数是多少。使用上述任何一种格式,您都可以使用其中一个标准文件读取功能,例如 TEXTSCAN例如:

>> fid = fopen('uneven_data.txt','rt');
>> C = textscan(fid,'%s %f %f %f %f','Delimiter',',','CollectOutput',1);
>> fclose(fid);
>> C{1}

ans =

'Item1'
'Item2'
'Item3'

>> C{2}

ans =

1 2 3 NaN %# TEXTSCAN sets empty fields to NaN anyway
4 5 6 7
8 9 NaN NaN

关于matlab - 在 MATLAB 中导入 CSV 文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043721/

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