为什么 textscan 不读取所有行 matlab
why textscan does not read all rows matlab
我有一个包含 5 列的文本文件。这是示例数据:
book 1 3 5 7
paper 3 9 0 2
pen 3 1 2 0
pencil 9 0 3 9
第一列包含字符,其他列只是数字。该文件包含多行。我正在尝试按如下方式阅读该 .txt;
fileID = fopen('filename.txt');
C = textscan(fileID,'%s %n %n %n %n');
fclose(fileID);
celldisp(C)
它正确读取了该列。但是,它只读取第一行,而不是全部。为什么会这样?如果我想读取所有行和所有列怎么办。谢谢
我假设您想创建一个元胞数组,其中每个元胞都包含文本文件中的单个元素。
您目前提供的代码是正确的:
fileID = fopen('filename.txt');
C = textscan(fileID,'%s %n %n %n %n');
fclose(fileID);
但是现在 C
中的每个单元格都包含您的 txt 文件中的一整列:
其中 C{1,1}
包含第一列,即四个字符串(book、paper、pen、pencil)。
现在是使用这段代码“展开”此类单元格的时候了:
for i=1:size(C,2)
if(iscell(C{:,i}))
A(:,i)=reshape(C{:,i},length(C{:,i}),1);
else
A(:,i)=num2cell(reshape(C{:,i},length(C{:,i}),1));
end
end
基本上是说“如果单元格包含一个单元格(请参阅 C{1,1}
),只需将其内容解包到 length(C{:,i})
个不同的单元格中。相反,如果单元格包含一个数组,请分配此数组的每个元素数组到不同的单元格。”。
现在元胞数组 A
的形式为
我希望这就是您要找的。
我有一个包含 5 列的文本文件。这是示例数据:
book 1 3 5 7
paper 3 9 0 2
pen 3 1 2 0
pencil 9 0 3 9
第一列包含字符,其他列只是数字。该文件包含多行。我正在尝试按如下方式阅读该 .txt;
fileID = fopen('filename.txt');
C = textscan(fileID,'%s %n %n %n %n');
fclose(fileID);
celldisp(C)
它正确读取了该列。但是,它只读取第一行,而不是全部。为什么会这样?如果我想读取所有行和所有列怎么办。谢谢
我假设您想创建一个元胞数组,其中每个元胞都包含文本文件中的单个元素。
您目前提供的代码是正确的:
fileID = fopen('filename.txt');
C = textscan(fileID,'%s %n %n %n %n');
fclose(fileID);
但是现在 C
中的每个单元格都包含您的 txt 文件中的一整列:
其中 C{1,1}
包含第一列,即四个字符串(book、paper、pen、pencil)。
现在是使用这段代码“展开”此类单元格的时候了:
for i=1:size(C,2)
if(iscell(C{:,i}))
A(:,i)=reshape(C{:,i},length(C{:,i}),1);
else
A(:,i)=num2cell(reshape(C{:,i},length(C{:,i}),1));
end
end
基本上是说“如果单元格包含一个单元格(请参阅 C{1,1}
),只需将其内容解包到 length(C{:,i})
个不同的单元格中。相反,如果单元格包含一个数组,请分配此数组的每个元素数组到不同的单元格。”。
现在元胞数组 A
的形式为
我希望这就是您要找的。