Matlab循環讀取txt文件並對其中數據進行計算最後導出爲excel

廢話不多說,先上代碼。

clear;
clc;

for i = 1:30	%文件個數
    filename = ['test (' num2str(i) ')' '.txt'];	%文件名稱
    delimiterIn = ' ';
    headerlinesIn = 12;		%文件中文字的行數
    AllData = importdata(filename,delimiterIn,headerlinesIn);		%獲取文件

    DiseaseData = AllData.data(1:2025,4:129);	%純數字矩陣

    MeanDiseaseData = mean(DiseaseData);		%進行平均值計算

    s=strcat('A',num2str(i))	%輸出A1 A2 A3等,用於下面循環導出爲excel
    
    xlswrite('testdata.xlsx',MeanDiseaseData,1,s);		%逐行寫入excel
end

輸入格式:順序增加的文件名稱,以便用來循環。
在這裏插入圖片描述
這裏就涉及到怎樣批量重命名文件了
在這裏插入圖片描述
對於上述文件,首先全選。
在這裏插入圖片描述
全選後按 F2 ,輸入文件名如 test
在這裏插入圖片描述
在按下 CTRL + Enter ,效果如下圖。
在這裏插入圖片描述
ok,至此輸入文件名稱格式已經好了。

此時,如果我們輸入的txt文件中既有英文,又有數字,如下圖所示。
在這裏插入圖片描述
我們直接使用 textread 函數的話,是會報錯的。
在這裏插入圖片描述
所以我們代碼裏使用:

    headerlinesIn = 12;		%文件中文字的行數
    AllData = importdata(filename,delimiterIn,headerlinesIn);		%獲取文件

這樣就可以將txt文件中的非數字部分去除。

至此,我們已經將txt文件中的數字轉化爲Matlab裏的矩陣了,接下來進行一系列運算後,將其輸出爲excel。

如果直接調用
xlswrite(filename,A)
的話,每次循環產生的新數組A,都會將之前的寫入excel的數組覆蓋,不管循環多少次,最終指揮獲得一個數組。

那麼,我們想每一次循環導出到excel的數組都放到上一次數組的下面。

這時我們需要先了解一下下面這個函數:
xlswrite(filename,A,sheet,xlRange)
%writes to the specified worksheet and range.

比如 xlswrite(test,A,1,A1)
意思就是將A這個矩陣放到名爲test的excel文件中,具體放的位置爲sheet1,矩陣左上角爲A1
在這裏插入圖片描述

那現在如果每次導入excel的矩陣爲一行的話,只需要第一次循環爲 xlswrite(test,A,1,A1),第二次爲 xlswrite(test,A,1,A2) 就好。

s=strcat('A',num2str(i))	%輸出A1 A2 A3等,用於下面循環導出爲excel
xlswrite('testdata.xlsx',MeanDiseaseData,1,s);		%逐行寫入excel

程序裏的這兩行就實現了上述功能。

總結

到此我們就實現了
1、matlab批量導入txt文件
2、將txt文件中的英文去除
3、逐行將矩陣輸出爲excel

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章