在MATLAB中读取同一路径下多个txt或mat文件

1、matlab中给我们提供了dir这个函数,十分方便。这里是读取所有txt文件,所以是dir('父目录路径\*.txt'),读取其它格式文件一样,如读取该路径下的所有png图像文件,则为dir('父目录路径\*.png')。

  1. %读取该目录下的所有txt文件
    %namelist  = dir('C:\Users\Administrator\Desktop\基于HOG特征和相关性的轮廓匹配算法matlab\*.txt');
    % 读取后namelist 的属性有
    % name -- filename
    % date -- modification date
    % bytes -- number of bytes allocated to the file
    % isdir -- 1 if name is a directory and 0 if not
       
    %通过字符串拼接,获取绝对路径可以直接用[],也可以用strcat()函数
    path = 'C:\Users\Administrator\Desktop\基于HOG特征和相关性的轮廓匹配算法matlab\';
    namelist = dir([path,'*.txt']);
    l = length(namelist);
    P = cell(1,l);%定义一个细胞数组,用于存放所有txt文件
    namelist(i).name;%这里获得的只是该路径下的文件名,如1.txt是相对路径
    for i = 1:l
        filename{i} = [path,namelist(i).name];%通过字符串拼接获得的就是绝对路径了
        P{1,i} = load(filename{i});
    end
     
    

2、面对多个 .txt 文件的依次读入,且文件名按一定的规律命名,如:filename1.txt,filename2.txt,... 。是纯数字数据类型的文本(不掺杂字符类型)依次读入,我们可以将其存储为cell数据类型,以便于后面关于数据的操作。在这里我们举一个例子:假如有10个 .txt 文件,我们把这些数据读入并存储为cell数据类型。我们可以使用循环依次读入文件,Matlab 程序如下:

data = cell(1,10); %建立细胞存储空间
for i = 1:10 
g = ['filename' num2str(i) '.txt']; 
data(1,i) = {textread(g)};%读入 .txt 文件置于 data 细胞中
end

对于读入的cell数据的显示,我们可以采用 :  data{m,n}(p,q);   %对存入的cell数据进行显示

在 .txt 文件中掺杂着字母+数字 类型的,我们同样也可以存储为struct 结构体数据的类型。这里我们再举一个列子。比如:两幅带有英文+数字的 .txt文件。我们将其读入并存储为结构体类型。 

for i=1:2
       str=strcat('filename',num2str(i),'.txt');
       hh{1}{i}=importdata(str);
 end

对于读入的struct数据的显示,我们可以采用:pp.textdata(2)%数据显示

面对多幅图片的读入,且文件名按一定的规律命名,如:filename1.jpg,filename2.jpg,... 。这里我们以依次读入三幅 .jpg 图片 为例,并存储为 struct 类型。

<pre name="code" class="html">for i=1:3
str=strcat('filename',num2str(i),'.jpg');
hh{1,i}=imread(str);
end

猜你喜欢

转载自blog.csdn.net/qq_39989653/article/details/88726998