对不包括最小值的行求和

对不包括最小值的行求和

我需要一些帮助。假设我有一个矩阵:

   4 5 6 6
a= 2 7 9 1
   9 0 4 5

我想找到第 2 行的总和,不包括第 2 行的最小值(即 1),我尝试过这个:

sum(a(2,:)~=1)

但它不起作用。有人能帮忙吗?

答案1

另一种不使用索引的方法是从总数中减去最小值,

sum(a(2, :)) - min(a(2, :))

答案2

您的代码

sum(a(2,:)~=1)

告诉你多少第二行中的条目不是最小值 1。这是因为 的参数sum

>> a(2,:)~=1
ans = 
     1     1     1     0

是一个逻辑数组,表示该行中的每个数字是否不等于 1,并且逻辑值 false 和 true 被 解释为数字 0 和 1 sum

您想要做的是使用这些值逻辑索引放入行中,并仅对选定元素求和

ind = a(2,:)~=1;
sum(a(2,ind))

或更短

sum(a(2,a(2,:)~=1))

当然,为了通用,最好用1以下表达式代替min(a(2,:))

相关内容