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

输入格式:顺序增加的文件名称,以便用来循环。
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第1张图片
这里就涉及到怎样批量重命名文件了
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第2张图片
对于上述文件,首先全选。
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第3张图片
全选后按 F2 ,输入文件名如 test
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第4张图片
在按下 CTRL + Enter ,效果如下图。
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第5张图片
ok,至此输入文件名称格式已经好了。

此时,如果我们输入的txt文件中既有英文,又有数字,如下图所示。
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第6张图片
我们直接使用 textread 函数的话,是会报错的。
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第7张图片
所以我们代码里使用:

    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
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel_第8张图片

那现在如果每次导入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

你可能感兴趣的:(matlab小技巧)