Matlab中从文件夹中批量读取文件的做法
2009-02-18 13:09
645 查看
function [read_data]=batch_read_file(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 1234.5422 12
% 1.2222 2.3333 3.4444
% 1 2 3 4 5 6 7 8 9
% 读出的数据是一个 (3,9)的矩阵 空缺的部分为 nan
file_read=dir(file_type);% 获得要读取的文件列表
%%%%%%%%%%%%%-+-XLS XLS XLS XLS XLS-+-%%%%%%%%%
% 在此段读取 *.xls 类文件
if strcmp(file_type,'*.xls')
for i=1:length(file_read)
file_name{i}=file_read(i).name;% 获取文件名的列表
% 开始准备向从 xls 文件中读取数据
read_data{i}=xlsread(file_name{i});
end
else
%%%%%%%%%%%%%-+-TXT TXT TXT TXT TXT-+-%%%%%%%%%
% 在此段读取 *.txt 类文件
for i=1:length(file_read)
file_name{i}=file_read(i).name;
fid=fopen(file_name{i},'r');
% 开始准备向从文件中读取数据
k=1;
while ~feof(fid)
% 这儿用fgetl似乎也没有错
temp=fgets(fid);
length_temp_data(k)=length(str2num(temp));% 求长度
temp_read_data{i}{k}=str2num(temp);% 写
%%%%%%%%
k=k+1;
end
%%-----
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
fclose(fid);
end
end
% <<---文件已完成,程序已修正--->>
% 可以读取的文件中,若有列数不相同的,则补 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 1234.5422 12
% 1.2222 2.3333 3.4444
% 1 2 3 4 5 6 7 8 9
% 读出的数据是一个 (3,9)的矩阵 空缺的部分为 nan
file_read=dir(file_type);% 获得要读取的文件列表
%%%%%%%%%%%%%-+-XLS XLS XLS XLS XLS-+-%%%%%%%%%
% 在此段读取 *.xls 类文件
if strcmp(file_type,'*.xls')
for i=1:length(file_read)
file_name{i}=file_read(i).name;% 获取文件名的列表
% 开始准备向从 xls 文件中读取数据
read_data{i}=xlsread(file_name{i});
end
else
%%%%%%%%%%%%%-+-TXT TXT TXT TXT TXT-+-%%%%%%%%%
% 在此段读取 *.txt 类文件
for i=1:length(file_read)
file_name{i}=file_read(i).name;
fid=fopen(file_name{i},'r');
% 开始准备向从文件中读取数据
k=1;
while ~feof(fid)
% 这儿用fgetl似乎也没有错
temp=fgets(fid);
length_temp_data(k)=length(str2num(temp));% 求长度
temp_read_data{i}{k}=str2num(temp);% 写
%%%%%%%%
k=k+1;
end
%%-----
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
fclose(fid);
end
end
相关文章推荐
- MATLAB中从文件夹批量读取图片文件的方法
- Matlab 读取文件夹里所有的文件
- MATLAB: 如何读取txt中的文件 如何将数据批量写入数据 文件名递增
- matlab一次读取多幅图片的方法////////////读取文件夹中的所有图片or文件
- MATLAB读取指定文件夹下的所有文件
- Matlab 读取父文件下子文件夹内容
- matlab读取一个文件夹下的所有文件…
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- MATLAB中批量从txt文件中读取指定行的数据保存为txt文件
- matlab 批量读取文件夹中的图片、处理后、保存于另一文件夹
- Matlab程序设计:批量读取文件(Image, excel, txt .etc)
- matlab 批量读取execl(csv)文件
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- [MATLAB函数分享]dir函数,批量读取指定文件夹下特定格式文档
- Matlab图像处理常用语句(1)--批量读取文件夹内图像
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- MATLAB中批量读取处理数据文件
- Matlab 读取文件夹里所有的文件