You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何使用sum()函数对find()提取的矩阵位置对应元素求和

首先修正你代码里的小问题:你定义的矩阵变量名是Matrix,后续find调用里用的变量是M,运行会报错,建议先统一变量名,比如将矩阵赋值改为M = [1 2 3 4 5 6; 6 5 4 3 2 1];

下面分两种求和需求给实现方法:

1. 对满足条件的矩阵元素求和

  • 方法1:直接用逻辑索引(不需要提前调用find,写法更简洁高效)
    直接对逻辑判断结果做索引再求和即可,示例代码:
    % 求所有小于4的元素的和
    sum_less4 = sum(M(M<4));
    % 求所有大于4的元素的和
    sum_greater4 = sum(M(M>4));
    
    以小于4的元素为例,对应元素为1、2、3、3、2、1,求和结果为12,和实际计算一致。
  • 方法2:基于已经拿到的行列索引f0、c0计算
    用sub2ind函数把行列下标转换成Matlab的线性索引,再取值求和即可,示例代码:
    % 先转线性索引再求和
    sum_less4 = sum(M(sub2ind(size(M), f0, c0)));
    sum_greater4 = sum(M(sub2ind(size(M), f1, c1)));
    

2. 对满足条件的索引值求和

如果需要对提取到的索引本身求和,直接对find返回的结果调用sum即可:

  • 对行索引求和:sum(f0)(小于4的元素的行索引总和)、sum(f1)(大于4的元素的行索引总和)
  • 对列索引求和:sum(c0)(小于4的元素的列索引总和)、sum(c1)(大于4的元素的列索引总和)
  • 对线性索引求和:sum(sub2ind(size(M), f0, c0))

内容的提问来源于stack exchange,提问作者user3527033

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:39:04