使用 space 和制表符分隔符导入 matlab
Import matlab with space and tab delimiter
我需要将一个 txt 文件导入到具有这种格式的 Matlab 中
text text text
1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
第一列与第二列由制表符分隔,其余数据由 space 分隔。
我试着用这个导入它:
g = importdata('file.txt',delimiterIn,headerlinesIn);
delimiterIn = ' ';
headerlinesIn = 1;
但是提取出来的table是这样的:
text text text
1 0 1 2 3
4 5 6 7 nan
2 10 11 15 18
15 1 18 3 nan
我想要的是保持格式的 table,g.data 的第一列独立,然后是所有其他列。
我想要一个像
这样的输出矩阵
1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
然后如果我需要提取第一列中由2表示的数据,我可以将其放入另一个值为
的矩阵中
10 11 15 18
15 1 18 3
矩阵单元格内的每个数字
我该怎么做?
可能有点过于务实,但这可能会有所帮助:
for i=1:size(A,1)
if isnan(A(i,end))==1
A(i,2:end) = A(i,1:4);
A(i,1) = NaN;
end
end
for i=1:size(A,1)
if A(i,1)==2
B = A(i:i+1,2:end);
end
end
解决方案可能是:
fid = fopen('test.txt');
M = {[]};Midx=1;
l = fgetl(fid); %header
l = fgetl(fid);
while ~isnumeric(l)
idx = str2double(l(1));
if ~isnan(idx)
Midx=idx;
M{Midx}=[];
l = l(2:end);
end
val = cell2mat(textscan(l,'%f'))';
M{Midx}=[M{Midx};val];
l=fgetl(fid);
end
fclose(fid);
我需要将一个 txt 文件导入到具有这种格式的 Matlab 中
text text text
1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
第一列与第二列由制表符分隔,其余数据由 space 分隔。 我试着用这个导入它:
g = importdata('file.txt',delimiterIn,headerlinesIn);
delimiterIn = ' ';
headerlinesIn = 1;
但是提取出来的table是这样的:
text text text
1 0 1 2 3
4 5 6 7 nan
2 10 11 15 18
15 1 18 3 nan
我想要的是保持格式的 table,g.data 的第一列独立,然后是所有其他列。
我想要一个像
这样的输出矩阵1 0 1 2 3
4 5 6 7
2 10 11 15 18
15 1 18 3
然后如果我需要提取第一列中由2表示的数据,我可以将其放入另一个值为
的矩阵中10 11 15 18
15 1 18 3
矩阵单元格内的每个数字
我该怎么做?
可能有点过于务实,但这可能会有所帮助:
for i=1:size(A,1)
if isnan(A(i,end))==1
A(i,2:end) = A(i,1:4);
A(i,1) = NaN;
end
end
for i=1:size(A,1)
if A(i,1)==2
B = A(i:i+1,2:end);
end
end
解决方案可能是:
fid = fopen('test.txt');
M = {[]};Midx=1;
l = fgetl(fid); %header
l = fgetl(fid);
while ~isnumeric(l)
idx = str2double(l(1));
if ~isnan(idx)
Midx=idx;
M{Midx}=[];
l = l(2:end);
end
val = cell2mat(textscan(l,'%f'))';
M{Midx}=[M{Midx};val];
l=fgetl(fid);
end
fclose(fid);