Image 在matlab中加载文本数据
我有一些文本文件(1.txt,2.txt,…,60.txt),它们都有5行标题。我使用以下代码,但它无法识别标题并导入所有数据。我如何说matlab开始从特定行导入Image 在matlab中加载文本数据,image,matlab,signal-processing,Image,Matlab,Signal Processing,我有一些文本文件(1.txt,2.txt,…,60.txt),它们都有5行标题。我使用以下代码,但它无法识别标题并导入所有数据。我如何说matlab开始从特定行导入 num_txt=60; input_dir='C:\data'; filenames=dir(fullfile(input_dir,'*.txt')); i=1; for n=1:num_txt filename=fullfile(input_dir, filenames(n).name); img=imp
num_txt=60;
input_dir='C:\data';
filenames=dir(fullfile(input_dir,'*.txt'));
i=1;
for n=1:num_txt
filename=fullfile(input_dir, filenames(n).name);
img=importdata(filename);
data(:,i)=img(:);
i=i+1;
end
具有两个附加参数:delimiterIn和HeaderLineIn
因此您使用(假设tab作为分隔符):
我还建议预先分配数据
矩阵
请注意,要使代码正常工作,请确保所有输入文件的大小相同。否则您将在数据(:,n)=img(:)中得到错误代码>(是,使用n
而不是i
)
对于上述两个问题,您可以将其插入到循环中:
if n==1
data = zeros(numel(img),num_txt);
else
assert(numel(img)==size(data,1),'sprintf('File %s has different size', filenames(n).name))
end
如果您了解基本知识,并且不想花太多时间在如何使用MATLAB阅读文本上,我建议您使用readtext.m Find。但是如果你正在学习,我建议你自己做。tnx,但是我如何将我的所有数据存储在data(:,I)=img(:);??因为每次导入都会生成一个单独的文件!我希望所有导入的数据都在一个矩阵中。我编辑后看到了你的评论img(:)
将单个文件中的所有数据拉伸到一个列向量中。因此,假设您的数据矩阵包含所有文件。实际上,您需要使用索引n
,而不是i
<代码>数据(:,n)=img(:)
。你不需要i=i+1代码>语句。您还可以将所有数据存储到3D数组中:data(:,:,n)=img代码>。相应地预先分配。
if n==1
data = zeros(numel(img),num_txt);
else
assert(numel(img)==size(data,1),'sprintf('File %s has different size', filenames(n).name))
end