gpt4 book ai didi

matlab - 将dat文件读入matlab中的矩阵,每行数据量不同

转载 作者:行者123 更新时间:2023-12-03 21:30:50 25 4
gpt4 key购买 nike

我正在尝试编写一个将数据加载到矩阵中的 matlab 函数。问题是数据每一行都多了一个值。所以不幸的是我不能使用加载,所以我正在尝试使用 fgetl。

数据如下:

143234 
454323 354654
543223 343223 325465

等等

我所做的是创建一个零矩阵,维度是高度和最长的数据字符串。为了将数据放入矩阵,我使用 fgetl 读取每一行,然后使用 textscan 在空白处拆分数据。然后我使用 str2num (我认为这是错误所在)将字符串转换为数字。

首先是我的代码:

%READTRI Opens the triangle dat file and turns it into a matrix

fid = fopen('triangledata.dat');

%create matrix of zeros for the data to be retrieved
trimat = zeros(15,15);

%Check to see if the file loaded properly
if fid == -1
disp('File load error')
else
%if it does, continue

%read each line of data into a
while feof(fid) == 0

%run through line by line
aline = fgetl(fid);

%split aline into parts by whitespace
splitstr = textscan(aline,'%s','delimiter',' ');

%This determines what row of the matrix the for loop writes to
rowCount = 1;

%run through cell array to get the numbers out and write them to
%the matrix
for i = 1:length(splitstr)

%convert to number
num = str2num(splitstr{i});

%write num to matrix
trimat(rowCount, i) = num;

end

%iterate rowCount
rowCount = rowCount + 1;
end
%close the file
closeresult = fclose(fid);

%check for errors
if closeresult == 0
disp('File close successful')
else
disp('File close not successful')
end
end



end

我得到的错误是:

Error using str2num (line 33)
Requires string or character array input.

Error in readTri (line 32)
num = str2num(splitstr{i});

令我困扰的是,当我尝试时,在交互式控制台中,循环中发生了同样的事情,即导入 aline,使用 textscan 将其拆分为元胞数组,然后使用 num2str 将其转换为整数。一切正常。因此,要么我使用 num2str 的方式有误,要么 for 循环做了一些奇怪的事情。

我只是希望得到点子,有很多数据,所以添加零来加载工作是不可能的。

感谢阅读!

最佳答案

您可以使用 dlmread 代替 load 或 fgetl只要该行没有最长行那么长,它就会自动返回一个带零的矩阵。就这样

matrix = dlmread('triangledata.dat');

关于matlab - 将dat文件读入matlab中的矩阵,每行数据量不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19203181/

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