matlab怎么批量读取一个文件夹中命名规律的tif文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab怎么批量读取一个文件夹中命名规律的tif文件?相关的知识,希望对你有一定的参考价值。

如图,我有一堆命名规则的tif文件,runoff_20100101到runoff_20100131, 怎么用matlab批量读取这些tif,并且取这31个tif的平均值(即同一个网格的平均值)? 每个tif 都是336*288的矩阵。 我想把不同tif中的同一个网格取平均值,谢谢

其实这种网上可以找到很多的……

clc;clear;

%工作目录是图形所在目录

Files=dir(['*.tif']);  

number=length(Files); 

sum_rbg_img = 0;

sum_gray_img = 0;

for i=1:number  

rbg_img=imread([Files(i).name]);  

sum_rbg_img = sum_rbg_img + rbg_img;  %% RGB 值

gray_img = rgb2gray(rbg_img);

sum_gray_img  = sum_gray_img + gray_img;  %% 灰度值

end 

% 平均值

av_rbg_img = sum_rbg_img/number;

av_gray_img = sum_gray_img/number;

参考技术A %以下以RGB图像为例,如果是灰度图像,删除2,3,12,13,16,17,18行即可。
R=[];
G=[];
B=[];
for i=1:31;
if i<10;
wj=['runoff_2010010',num2str(i),'.tif'];
else
wj=['runoff_201001',num2str(i),'.tif'];
end
X=imread(wj);
R(:,:,i)=X(:,:,1);
G(:,:,i)=X(:,:,2);
B(:,:,i)=X(:,:,3);
end
X(:,:,1)=mean(R,3);
X(:,:,2)=mean(G,3);
X(:,:,3)=mean(B,3);
image(X)
imwrite(X,'abc.tif')
%迈特莱博

Matlab中如何批量读取文件夹中的文件进行处理?

比如我有一个文件夹abc下有1000个文件,每个文件的数据格式都相同,为<id, time, x, y, z>,现在我要依次遍历每个文件,得到<x, y>的值,然后画图,我写了如下的一个程序,但是有问题,如果有谁看到,还请帮忙看下这个问题要怎么处理,感激之情不胜言表。
clear;
file_read = dir('abc')
file_length = length(file_read)
for i = 1:file_length
file_name = file_read(i).name
loc_X = textread(file_name, '%*s%*s %.8f %*s%*s)
loc_Y = textread(file_name, '%*s%*s %*s %.8f %*s)
figure
plot(loc_X, loc_Y, '-sb')
hold on
end

1 图像按编号命名:1.jpg, 2.jpg,....,n.jpg
2 循环读图
I=cell(1,n);
for i=1:n
imageName=strcat(num2str(i),'.jpg');
Ii = imread(imageName);
end
3 处理图像
-----------------------
如果图像很多,那么最好这样,第二步和第三步合并
for i=1:n
imageName=strcat(num2str(i),'.jpg');
I = imread(imageName);
处理当前图像
参考技术A dir之后,会得到本地目录. 和上级目录.. 是否这个两个非文件所致?建议修改为 for i = 3:file_length。

另外,如果数据文件没有id, time, x, y, z 这行title,建议直接用load,多省事
参考技术B 1 图像按编号命名:1.jpg, 2.jpg,....,n.jpg
2 循环读图
I=cell(1,n);
for i=1:n
imageName=strcat(num2str(i),'.jpg');
Ii = imread(imageName);
end
3 处理图像
-----------------------
如果图像很多,那么最好这样,第二步和第三步合并
for i=1:n
imageName=strcat(num2str(i),'.jpg');
I = imread(imageName);
处理当前图像
end
请采纳答案,支持我一下。追问

恩,谢谢你的回答,这个不是图像处理,是简单的文件,文件里的数据是5元组,现在我只要的值,你这个回答等于没回答,所以我不能采纳,不过谢谢。

以上是关于matlab怎么批量读取一个文件夹中命名规律的tif文件?的主要内容,如果未能解决你的问题,请参考以下文章

matlab如何批量读取mat文件中的矩阵?

matlab中怎样批量处理文件?

matlab如何批量读取带有编号的文件

matlab 连续读取多个文件

如何让MATLAB自己连续的读取文本文件

matlab批量处理数据