我需要一些帮助。假设我有一个矩阵:
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,:))