循环读取图片第一种方法①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在循环中保存jpg格式_Matlab如何循环读取文件相关推荐

  1. iPhone中的heic格式怎么查看,heic文件怎么打开

    关于heic格式,那最大的疑问就是在电脑和安卓中都是无法直接查看heic格式的,因为格式不兼容的问题,对于很多女生来说,可能是一个×××烦,因为平时会拍很多照片,手机内存的限制,我们会将其传到电脑上保 ...

  2. 为什么单独循环中的元素加法比组合循环中的要快得多?

    假设<code>a1 , b1 , c1和d1指向堆内存,而我的数字代码具有以下核心循环. const int n = 100000;for (int j = 0; j < n; j ...

  3. for循环中抛出异常_不要抛出循环!

    到目前为止,在本系列文章中,我一直专注于Scala对Java生态系统的忠诚度,向您展示Scala如何整合Java的大部分核心对象功能. 但是,如果Scala只是编写对象的另一种方式,那么它就不会像它那 ...

  4. vue 父循环怎么拿子循环中的值_Vue 父组件循环使用refs调用子组件方法出现undefined的问题...

    Vue 父组件循环使用refs调用子组件方法出现undefined的问题 1. 背景 最近前端项目遇到一个问题,我在父组件中使用了两个相同的子组件child,分别设置ref为add和update.其中 ...

  5. 【笔记】python的while循环简介:使用while循环、让用户选择何时退出、使用标志、使用break退出循环、在循环中使用continue、避免无限循环

    文章目录 一.while循环简介 二.使用while循环 三.让用户选择何时退出 四.使用标志 五.使用break退出循环 六.在循环中使用continue 七.避免无限循环 一.while循环简介 ...

  6. Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型

    场景 Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载.目前最主流的Web服务 ...

  7. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)

    在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...

  8. python如何在循环中保存文件_python-如何在for循环中更改为另一行文件

    我有一个ifs和elses(不写)长函数,而whatnot包含一个for循环,用于在文件的每一行中查找: def check(low,high): with open('users.txt', 'r+ ...

  9. 关于PhotoShop中保存CMYK格式TIFF文件在GDI+错误地显示颜色的问题解决方法

    使用Adobe PhotoShop创建并保存的CMYK Tag图像文件格式 (TIFF) 图像后,我们常会遇到以下情况: (1)如果再使用GDI+进行转换或显示时,经常会发现显示的颜色与原来的颜色不一 ...

最新文章

  1. c语言hook内核作用,hook内核函数的基本方法(附代码,经测试不蓝屏)
  2. 程序员职业规划的3个锦囊
  3. 几种开源的TCP/IP协议栈分析
  4. linux 查看namenode进程是否存活:返回namenode进程个数
  5. C++ class实现单向循环链表(完整代码)
  6. 论文阅读笔记(一)【Journal of Machine Learning Research】Natural Language Processing (Almost) from Scratch(未完)
  7. 江西财经大学计算机排名2019,2019年全国商科院校评价报告出炉 江西财经大学排名第七...
  8. Ubuntu 15 周年!
  9. 从AWS到阿里云: 产品体系差异分析 | 凌云时刻
  10. mysql Load Data InFile 的用法
  11. qq互联php教程,thinkphp5怎么整合qq互联登录教程
  12. JavaScript操作canvas制作前端H5小游戏——Flappy Bird
  13. 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
  14. thinkphp用phpqrcode生成二维码(含中间带logo、临时二维码)或生成微信二维码海报的方法
  15. 认知天性——读书笔记
  16. 封装的含义、封装的作用、如何封装、什么情况下封装?
  17. Count,TPM,FPKM,CPM之间的格式转换——Count转TPM
  18. 第13期 《由量变到质变的过程》3月刊
  19. python表格数据_用python读取表格数据
  20. 数字监控系统与模拟监控系统的区别

热门文章

  1. jquery点击按钮显示和隐藏div
  2. linux笔记本设置休眠
  3. 关于ORACLE通过file_id与block_id定位数据库对象遇到的问题的一点思考
  4. CenterOS的安装配置(配图解)
  5. JAVA中MD5加密实现
  6. 记录在Ubuntu 18.04系统中安装Apache, MySQL和PHP环境
  7. 使用 header函数实现文件下载
  8. 8 -- 深入使用Spring -- 5... Spring 3.1 新增的缓存机制
  9. loadrunner协议选择
  10. int与string互转