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

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 20: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);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 修改了问题 6月4日
  • 创建了问题 6月4日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度