例如:
1,2,3
4,5,6
7,8,9
1,2,3
4,5,6
7,8,9
一到三行各列求均值,四到六行各列求均值
输出:
4,5,6
4,5,6
也许可以考虑for循环或者reshape,将多行数组重新分组,然后求均值?
(甚至出现缺测或者为0时求均值需要去除!)
入参( 矩阵,其实行,终止行)
function [ MeanRet ] = myFun( A,startRow,endRow )
MeanNum =[];
%取得目标行
Alocal = A(startRow:endRow,:);
%多少列数
colNum = size(Alocal,2);
%总行数
rowNum = endRow-startRow+1;
for i=1:1:colNum
%取得一列
temp = Alocal(:,i);
%这一列含有0的个数
ZeroNum = temp(temp==0);
%这一列空值个数
NanNum = temp(isnan(temp));
%这一列 算平均值 有效的个数
MeanNum = [MeanNum, (rowNum-size(ZeroNum,1)-size(NanNum,1))];
end
a=0;
%把nan变成0,方便后边算和
Alocal(isnan(Alocal)) = 0;
%算平均值
MeanRet = sum(Alocal)./MeanNum;
end
使用函数
A=[1,0,3;
4,5,6;
nan,0,9;
1,2,3;
nan,5,2;
7,8,9];
ret = myFun(A,4,6);