Matlab 读取文件夹里所有的文件[转载]

Matlab 读取文件夹里所有的文件

 

(image = dir('D:\gesture\*.*');

% dir是指定文件夹得位置,他与dos下的dir用法相同。

用法有三种:

        1. dir 是指工作在当前文件夹里

        2. dir name指定某一个文件,name可以如*.txt

        3. file=dir('filename’); 例如file=dirfullfilematlabroot,'toolbox/matlab/audiovideo/*.m'));

 

假如读取FEnglish文件夹中的所有bmp图片:

         Files = dir(fullfile('F:\\english\\','*.bmp'));

         LengthFiles = length(Files);

         for i = 1:LengthFiles;

                  Img = imread(strcat('F:\english\',Files(i).name));

                  %自己写图像处理函数 ImgProc(Img);

         end

 

下面是一个比较完整的读取文件夹里数据的程序

          function [read_data] = batch_read_file( dirction, file_type);

         % <<---文件已完成,程序已修正--->>

         可以读取的文件中,若有列数不相同的,则补 nan

         数据文件中只能是数字

         %  *.xls 文件只能是英文或数字命名

         % 批量读数据的程序, 只能读取 *.txt类文件, 且文件必须有后缀名

         % [read_data_A]=batch_read_file('*.txt')

         % [read_data_A]=batch_read_file('*.xls')

         % file_type为文件的格式

         % 返回值 read_data 为元数组, 保存谋取到的数据

         % xls 文件的说明:

         % xls文件以文件名升序排序

         % xls文件只能容许一个工作表,若有多个,则读取的为名字值最大的一个工作表

         % file_type='*.txt' or file_type='*.xls';

         %   示例:在数据文件中有如下内容 1.txt

         %   1             2            3.345     34.522    12   

         %   1.2222     2.3333    3.4444   

         %   1             2            3            4            5     6     7     8     9

         %   读出的数据是一个 (3,9)的矩阵空缺的部分为 nan

 

         file_read=dir(fullfile(dirction,file_type));       % 获得要读取的文件列表

         if strcmp(file_type,'*.xls');                         % 读取Excel文件

                  for i=1:length(file_read)

                        file_name{i} = file_read(i).name;          % 获取文件名的列表

                        % 开始准备向从 xls 文件中读取数据

                       read_data{i} = xlsread(file_name{i});

                  end

        else

                 for i=1:length(file_read)                       % 在此段读取 *.txt 类文件

                          file_name{i} = file_read(i).name;

                          fid=fopen(file_name{i},'r');

                           % 开始准备向从文件中读取数据

                           k=1;

                           while ~feof(fid)           

                                    temp=fgets(fid);                   % 这儿用fgetl似乎也没有错

                                    length_temp_data(k) = length(str2num(temp));    % 求长度

                                    temp_read_data{i}{k} = str2num(temp);            %   写数据

                                    k=k+1;

                         end        % end of for while ~

                         max_row=max(length_temp_data);      % 求最大的长度,以确定补 nan 的个数

                         for j=1:k-1

                                 len=length(temp_read_data{i}{j});

                                 if len<max_row

                                         temp_read_data{i}{j}(len:max_row) = nan;

                                 end

                                 read_data{i}(j,:) = temp_read_data{i}{j};

                         end        % end of for j =

                       fclose(fid);

               end  % end of for i =

        end % end of if else

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值