Matlab 每10列取一次和及平均值 代码

高光谱数据或者高分辨率空间栅格数据量大,在分析时为提高运行速度往往需要降低分辨率,本人寻找每n列取一次平均值时耗费了大量时间,相关提问帖子很多,回答的很少,要么不符合作者实际需求,要么过于冗长,在此,特分享简短的光谱平均分析常用代码,以解相关专业同学燃眉之急。

代码目的是对数据每10列取一次平均,即,1到10列计算一次平均值作为结果的第一列,11到20列计算一次平均值作为结果的平均值,同时,附上每10行取一次平均代码,如能帮助各位劳烦给个赞,谢谢

%Purpose:average
%Author name:Li Pengyan
%date:2121.12.12

clc
clear
close all
load('a.mat');%加载6600*5910的矩阵
%每10行取平均
%不需要求和的情况下sum1两行可以删除直接求平均值
sum1=zeros(660,5910);%the sum行数除以缩小倍数660=6600/10,列不变
ave1=zeros(660,5910);%the average行数除以缩小倍数165=6600/40
for j=1:5910%列不变
for i=1:660%行从1到660
sum1(i,j)=sum(a(10*(i-1)+1:10*i,j));% 每10行取一次和
ave1(i,j)=sum(a(10*(i-1)+1:10*i,j))/10;%a为输入参数,每10行取一次平均
end
end
xlswrite('F:\data\data use\1.xlsx',ave1) %结果写入excel表格

%对上述数据,每10列取平均
sum2=zeros(660,591);%the sum
ave2=zeros(660,591);%the average
for i=1:660
for j=1:591
sum2(i,j)=sum(ave1(i,10*(j-1)+1:10*j));
ave2(i,j)=sum(ave1(i,10*(j-1)+1:10*j))/10;%ave1为上述输入参数,若新输入则更改
end
end
xlswrite('F:\data\data use\1.xlsx',ave2,'sheet2')%结果写入excel表格

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值