sxy0808 2022-06-04 11:39 采纳率: 100%
浏览 163
已结题

matlab如何对数组按多行重新分组并求均值啊?

例如:
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时求均值需要去除!)

  • 写回答

1条回答 默认 最新

  • 胸毛男 2022-06-04 12:46
    关注

    入参( 矩阵,其实行,终止行)

    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);
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    sxy0808 2022-06-07 08:34

    谢谢您

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月7日
  • 修改了问题 6月4日
  • 创建了问题 6月4日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部