matlab批量處理mat

來源:互聯網
上載者:User

這幾天不斷有人詢問,如何批量把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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.