Outra maneira de fazer isso sem indexar é subtrair o mínimo da soma,
sum(a(2, :)) - min(a(2, :))
Eu preciso de ajuda por favor. Digamos que eu tenha uma matriz:
4 5 6 6
a= 2 7 9 1
9 0 4 5
Eu quero encontrar a soma da linha 2, sem incluir o valor mínimo da linha 2 (que é 1), Eu tentei isso:
sum(a(2,:)~=1)
mas não funciona. Alguém pode ajudar?
Outra maneira de fazer isso sem indexar é subtrair o mínimo da soma,
sum(a(2, :)) - min(a(2, :))
Seu código
sum(a(2,:)~=1)
informa a você quantas entradas na segunda linha não são o mínimo de 1. Isso é porque o argumento para sum
,
>> a(2,:)~=1
ans =
1 1 1 0
é um array lógico que indica se cada um dos números nessa linha é diferente de 1, e os valores lógicos false e true são interpretados como números 0 e 1 por sum
.
O que você quer fazer é usar esses valores para indexação lógica na linha e somar apenas os elementos selecionados
ind = a(2,:)~=1;
sum(a(2,ind))
ou menor
sum(a(2,a(2,:)~=1))
É claro que, para a generalidade, seria melhor substituir 1
pela expressão min(a(2,:))
Tags matlab