matlab批量导入文件
转载:http://www.cnblogs.com/woshitianma/p/3724922.html
循环读取图片第一种方法①List =dir('*.jpg');
%如需其它图片格式支持,可以自己【重载dir()】函数,实现查找所有图片文件的功能,
%如果图片是其它路径,可以用 ["路径" ".扩展名"] 字符串来实现。
k =length(dList);
for i=1:1:k
image_data{i}=imread(dList(i).name);
end
第二种方法②I=ones(8,5);
q=reshape(49:56,8,1);
I(:,1)=q;
I(:,2)='.';
I(:,3)='b';
I(:,4)='m';
I(:,5)='p';
L=setstr(I); %将ASCII码转为字符串;
第三种方法③
images= [ ];
for i= 1:M
str= strcat ('D: \MATLAB\work\', int2str(i) , ’.bmp’) ; % 连接字符串形成图像的文件名。
img= imread(str);
[rows cols]= size(img) ; % 获得图像的行和列值。
temp= reshape ( img, rows*cols, 1) ; % 创建一个(N1*N2)×1 矩阵。
images= [ images temp ]; % 完成循环后的images 矩阵是一个(N 13 N 2) ×M 矩阵。
end
上述三种方法中,第一种主要利用dir()函数,获得文件夹内图片的信息,然后创建一个元胞数组,将图片文件信息送入元胞数组
第二种方法是已知图片文件名,并且按数字顺序排列,然后利用数字和字符串之间的转换来进行。
第三种方法利用字符串连接函数strcat()函数巧妙运用循环实现图片的连续读入。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
文件名规律(比如qnl260.200,qnl260.201,qnl260.202~~qnl260.300)的多个二进制文件进行同样的处理,
问题是怎么循环的读入这些文件,就是想编个程序让它读取第一个数据处理,然后读取第二个数据处理,以此类推
file=dir('*.txt');
data=cell(1,size(file,1));
for i=1:size(file,1);
data{1,i}=read(file(i).name);
end
获取路径的文件索引后读入
具体的read模式可以参见help
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
现在假定有一个数据文件叫data.dat,它的前面2k是存放参数的,我们做数据处理的时候需要跳过去,后面的数据是16位整数类型的,每组数据有512个。现在要把该数据文
件的所有数据读入一个nx512的矩阵中,n的个数不定,根据数据文件中的数据而定。
用.m脚本的方式编写如下:
% deal data from specified data file
clear ;
data_fname = 'data.dat' ; % 这里是文件名
jump_distance = 2048 ; % 这里是跳过的字节数
% 打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的
file_id = fopen(data_fname, 'rb');
% 从文件开始跳过jump_distance个字节
fseek(file_id, jump_distance, 'bof');
% 先手工构造一个1x512大小的矩阵
raw_data = [1:1:512] ;
while feof(file_id) == 0
% 这就是大名顶顶的fread了,数据类型是int16,每次读入512个数
% raw_array每次都是512x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)
[row_array, ele_count] = fread(file_id, 512, 'int16') ;
if ele_count < 512 % elecount < 512代表数据不够,已经到了文件的结尾
break ;
else
% 将512x1的row_array转置一下,变为1x512的矩阵
row_array = row_array' ;
% 然后,将row_array追加到raw_data中
raw_data = [raw_data; row_array] ;
end
end
% get off the first line [1:1:512]
% 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了
raw_data(1,:)=[] ;
% 关闭文件
fclose(file_id);
% delete other usless vars
% 这里是把用过的变量都删除掉,免得workspace里面乱七八糟的什么都有,这是个好习惯,呵呵。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
matlab中读取某个文件夹下所有数据文件
怎么用matlab读取多个数据文件?
1:如果文件名规则
% 文件目录:
my_dir=' /home/my_calculation1/test1/';
%文件名前缀
my_pre_T='test';%文件数目fnum =1:32; %Read filesfor i=1:length(fnum) filename = [my_dir,prefix_T1 num2str(fnum(i))]; 然后dlmread,fopen等操作就不需详写
了!与单个文件一样。
end
2:文件夹数据批量读取的问题,命名无规则
在windows下很简单,ls函数便可以得到一个包含所有文件名的字符矩阵。可惜在unix下得到的是个字符行向量。当然,处理下也可以批量读取数据文件,不过不想再写了。
因为另外一个函数也可以实现批量处理数据文件的功能。即dir函数
LS displays the results of the 'ls' command on UNIX.
On UNIX, LS returns acharacter row vectorof filenames separated by tab and space characters.
On Windows, LS returns anm-by-n character array of filenames, where m is the number of filenames and n is the number of characters in the longest
filename found. Filenames shorter than n characters are padded with space characters.
下面介绍下使用dir函数读取文件夹中文件的程序
2.1 读取所有扩展名为.dat的数据文件,并进行处理。
matlab中,也可以使用通配符的。下面就来展示下:
现在有一个文件夹里面有50个的.dat文件.每个文件大概三万行.两列,第一列是字符串,第二列是浮点数字.批量读取这个文件夹里的.dat文件的第二列。读取完以后的数组变
量名就是.dat的文件名
假定.dat文件在/home/my_calculation1/test1/ 文件夹下,文件名符合matlab变量名的命名规则,要读取第二列的浮点数字为数组并以文件名为变量名。
mydir='/home/my_calculation1/test1/';
temp1=dir([mydir,'*.dat']);
num_temp1=length(temp1);
for i1=1:num_temp1
filename=[mydir,temp1(i1).name];
temp=dlmread(filename,'',0,1);
eval([temp1(i1).name(1:end-4),'=temp;'])
dlmread,fopen等操作就不需详写了!与单个文件一样。end
注意:如果直接使用 temp1=dir(mydir]);读取文件夹下所有文件,应当从第三个开始才是目录下的文件。另外,使用dir还可以遍历一个文件夹下的所有子文件夹。 1、利用
dir(外层文件夹)获取子文件夹;
2、利用dir(子文件夹)获取子文件夹中的文件信息;
3、遍历文件,做处理;对于遍历文件夹,也可以使用mathworks网站上的函数dirr轻松搞定。下面是饮水思源论坛上的做法。没有进行整理。敬请原谅。
论坛地址:
现在有个文件夹data中的数据想要批量处理,
而data中有多个子文件夹,名字分别为01001,01002,…,每个子文件夹中有多个数据,假设为ECG.txt,PCG.txt,…。
现在我想要依次读取01001中的各数据进行处理,然后读取01002中的进行处理,依此类推,直到将data文件夹中的数据全都处理完。
我知道在labview中可以把文件夹的名字弄成字符拼接后可以不断的循环读取,不知道在matlab中如何实现这样的功能?
因为这几天连着做实验,今天才有时间上网看一下,
回复比较晚。刚刚下载了名为dirr.m的文件。LIST=DIRR('D:\data');可以实现将data中的子文件夹全都读取进来。存为一个名为LIST的struct。
以01001文件夹中的数据为例,可以知道每个数据的位置了,可是我应该如何读取出来呢?
例如LIST(1).isdir(1)中的是CPT.txt,但是我只能得到一个存有该文件名字和大小等的struct格式,
不知道应该如何读入该数据。eval命令不知道该如何用?试了一下eval(LIST(1).isdir(1)),出现错误,
说是该命令不能做struct类。
cottonsugar (棉花糖) 于 2009年09月23日18:25:30 星期三) 提到:
fl=dirr('./');nl=length(fl);for i=1:nl fname=fl(i).name; if strcmp(fname,'XXXX') str=['load ',fname];eval(str);enden
最后的关键就在于load那句了。str=['load(D:\data\',fl(i).name,'\',fname,')'];因为load在用的时候是:load('D:\data\01001\ECG.txt');
现在我无法加上那个括号里面的一撇',所以总是无法把数据load上。请问这个一撇怎么加上呢?谢谢啦。我改了以后的程序如下:
fl=dirr('D:\data');nl=length(fl);nl2=length(fl(1).isdir);
for i=1:nl for j=1:nl2 fname=fl(i).isdir(j).name;
if strcmp(fname,'ECG.txt') str=['load(D:\data\',fl(i).name,'\',fname,')'];eval(str);
end
end
end
比如你想load一个文件 load('d:\ecg.txt');
用string来表示就是str=['load(''d:\ecg.txt'');'];然后再eval(str)即可
matlab批量导入文件相关推荐
- matlab 将txt导入excel,[转载]MATLAB 批量导入excel和txt文件的方法
将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:UsersAdministratorDesktopMATLAB数据的导入导出以及试验的数据 ...
- matlab 批量导入excel,MATLAB 批量导入excel和txt文件的方法
将一个文件目录下所有的文件名字全部倒入到一个文件中,除了使用ls函数以外,还可以使用 file=dir('C:\Users\Administrator\Desktop\MATLAB数据的导入导出以及试 ...
- matlab文件批量命名,利用MATLAB批量对文件重命名
利用MATLAB批量对文件重命名 tags: MATLAB 科研软件 序 窃·格瓦拉 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . pape ...
- MATLAB 批量处理文件
MATLAB 批量处理文件 MATLAB 批量处理文件 MATLAB 批量处理 *.mat *.txt MATLAB 批量处理 *.mat *.txt 假设D:\File\文件下:Ls1.mat,Ls ...
- matlab文件名加前缀_利用MATLAB批量对文件重命名
利用MATLAB批量对文件重命名 tags: - MATLAB - 科研软件 序 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . paper又 ...
- MATLAB批量创建文件夹
描述: 使用matlab批量创建文件夹. 文件名称已经在excel中生成,读取表格内容(cell结构),当做文件夹名称. 代码如下: %% 根据excel创建文件夹 [~,~,file_name] = ...
- matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......
如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...
- WIX插件安装包的生成(三) 批量导入文件
前文说过,我们是在编写AutoCAD的二次开发,所以其中不免引用到许多dll文件和图片资源,而这些文件往往数以百千计 <ComponentGroup Id="ProductCompon ...
- matlab批量修改文件扩展名
有时候matlab在保存文件的时候,扩展文件名一不小心会写错,导致批量生成的文件格式或文件名不是想要的.例如处理完一个图像库的图像所有结果都保存为了".jpg"格式结果,但是实际想 ...
最新文章
- 操作系统老师上课讲的那个根据I/O时间和CPU时间比例来为进程分配优先级的题目,I/O时间比例越大,则这个进程的优先级越高
- Python 为啥不建议使用 thread模块?
- C# 规则引擎RulesEngine
- python与c的联系_Python与C的通信#
- 详谈RDMA(远程直接内存访问)技术原理和三种实现方式
- php 读xml的两种方式
- Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
- Matlab之聚类分析
- matlab中怎么使用数组,matlab中数组的基本使用
- 2018年大数据趋势 :人工智能... 数据分析将包含可视化模型...
- 更改已生成的exe文件的ico图标
- QQ群 该页面暂时无法显示
- mmorpg游戏设计之2D游戏地图的九宫格子
- 10分钟学计算机,电脑运行越来越慢?程序员大牛10分钟教你学会电脑瘦身
- CCS8.0和XDS100V3仿真器连接目标板失败的解决办法
- 【洛谷】P1462 通往奥格瑞玛的道路
- 优秀的教育网站、自学网站、教师网站
- 如何用WxJump成功解决生成在微信可用的网址二维码的API接口
- Kettle入门到实战
- 广州大学 计算机基础,广州大学计算机应用基础试卷A卷
热门文章
- 毕业论文图片格式、分辨率选择及高质量Word转PDF方法
- rtklib解码SSR时候时间问题
- H5 app开启web调试
- 前NASA工程师从3万米高空扔下鸡蛋,没碎
- 用计算机设计电路图,基于51单片机的计算器设计(含电路图,程序)
- 一次显卡报错的解决过程
- Microsoft visual c++ 2015 redistributable 已安装这个产品的另一版本报错
- 如果你想要“一百种”方法玩转天猫双11,这里是一份完整版指南
- Kinect V1结构光激光散斑原理及样式
- 华为的数字化转型方法论(资料下载)