這幾天不斷有人詢(xún)問(wèn),如何批量把txt轉(zhuǎn)為mat格式。mat格式存儲(chǔ)占的空間小。
這里以中國(guó)氣象局的站點(diǎn)數(shù)據(jù)為例,轉(zhuǎn)換程序如下:
clc %清屏
clear %清內(nèi)存變量
filenames = ls(‘*.txt’);%以字符串?dāng)?shù)組的形式列出該路徑下所有的txt文件
[m n] = size(filenames);%獲取filenames的行列數(shù)
for j = 1:m
fid=dlmread(char(filenames(j,:)));
matname=char(filenames(j,1:6));
save(matname,’fid’);%轉(zhuǎn)為mat格式
% xlswrite(matname,fid);%轉(zhuǎn)為xls格式
JDT=[matname,’轉(zhuǎn)換完畢!’];
disp(JDT)
end
在以上程序轉(zhuǎn)換完畢之后,需要把多個(gè)mat格式合并成一個(gè)文件:
clc %清屏
clear %清內(nèi)存變量
filenames = ls(‘*.mat’);%以字符串?dāng)?shù)組的形式列出該路徑下所有的txt文件
[m n] = size(filenames);%獲取filenames的行列數(shù)
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’);
也有人需要按照站點(diǎn)存儲(chǔ)數(shù)據(jù),這個(gè)程序在之前的文章講到過(guò)。程序如下:
clc %清屏
clear %清內(nèi)存變量
filenames = ls(‘*.mat’);%以字符串?dāng)?shù)組的形式列出該路徑下所有的txt文件
[m n] = size(filenames);%獲取filenames的行列數(shù)
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));%查找第一列中不同的數(shù)及所在的位置q = 1;for i = 1:length(v)-1 matname=num2str(u(i)); r=f(q:v(i+1)-1,:); save([matname,'.txt'],'r','-ASCII');%寫(xiě)出 q = v(i+1);endend
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注