matlab批量处理mat

这几天不断有人询问,如何批量把txt转为mat格式。mat格式存储占的空间小。

这里以中国气象局的站点数据为例,转换程序如下:

clc %清屏

clear %清内存变量

filenames = ls(‘*.txt’);%以字符串数组的形式列出该路径下所有的txt文件

[m n] = size(filenames);%获取filenames的行列数

for j = 1:m

fid=dlmread(char(filenames(j,:)));

matname=char(filenames(j,1:6));

save(matname,’fid’);%转为mat格式

% xlswrite(matname,fid);%转为xls格式

JDT=[matname,’转换完毕!’];

disp(JDT)

end

在以上程序转换完毕之后,需要把多个mat格式合并成一个文件:

clc %清屏

clear %清内存变量

filenames = ls(‘*.mat’);%以字符串数组的形式列出该路径下所有的txt文件

[m n] = size(filenames);%获取filenames的行列数

g=[];

for j = 1:m

d=load(filenames(j,:));

e=struct2cell(d);

f=cell2mat(e);

clear d e;

g=cat(1,g,f);

end

save(‘dailyPrecipitation’,’g’);

也有人需要按照站点存储数据,这个程序在之前的文章讲到过。程序如下:

clc %清屏

clear %清内存变量

filenames = ls(‘*.mat’);%以字符串数组的形式列出该路径下所有的txt文件

[m n] = size(filenames);%获取filenames的行列数

for j = 1:m

g=load(filenames(j,:));

e=struct2cell(g);

clear g;

f=cell2mat(e);

clear e; 

aa=f(:,10);

aa(aa>20000)=0;

f(:,10)=aa./10;    

f=sortrows(f,[1,5,6,7]);

[u v] = unique(f(:,1));%查找第一列中不同的数及所在的位置

q = 1;

for i = 1:length(v)-1

    matname=num2str(u(i));

    r=f(q:v(i+1)-1,:);

    save([matname,'.txt'],'r','-ASCII');%写出

    q = v(i+1);

end

end

好的,针对您的问题,我可以给您提供以下几个步骤: 1. 使用 `dir` 函数获取 mat 文件路径列表,例如: ```matlab mat_dir = 'mat_files/'; mat_files = dir(fullfile(mat_dir, '*.mat')); ``` 这里假设您的 mat 文件存储在 `mat_files/` 目录下,且文件名以 `.mat` 结尾。 2. 循环遍历 mat 文件路径列表,使用 `load` 函数读取 mat 文件中的数据,例如: ```matlab for i = 1:length(mat_files) mat_file = mat_files(i); mat_data = load(fullfile(mat_dir, mat_file.name)); % 在这里对 mat_data 进行处理 end ``` 这里假设您的 mat 文件中存储的数据可以直接用变量 `mat_data` 来获取。 3. 对读取到的 mat 文件中的数据进行处理,例如: ```matlab for i = 1:length(mat_files) mat_file = mat_files(i); mat_data = load(fullfile(mat_dir, mat_file.name)); % 在这里对 mat_data 进行处理 % 假设 mat_data 中存储的是一个矩阵,可以使用以下代码进行处理 mat_matrix = mat_data.mat_matrix; processed_matrix = some_processing_function(mat_matrix); % 将处理后的数据存储到新的 mat 文件中 new_mat_file_name = strcat(mat_file.name, '_processed.mat'); save(fullfile(mat_dir, new_mat_file_name), 'processed_matrix'); end ``` 这里假设 `some_processing_function` 是您自己定义的一个用于处理 mat 文件中数据的函数。在这个例子中,我们将处理后的数据存储到同一目录下的一个新的 mat 文件中,文件名为原始文件名加上 `_processed` 后缀。 希望这些步骤对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值