您的位置:首页 > 编程语言 > MATLAB

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

2012-04-29 18:49 302 查看
Matlab 读取文件夹里所有的文件

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

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

用法有三种:

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

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

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

假如读取F盘English文件夹中的所有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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: