Somando uma linha excluindo seu valor mínimo

1

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?

    
por pete 19.01.2015 / 19:00

2 respostas

2

Outra maneira de fazer isso sem indexar é subtrair o mínimo da soma,

sum(a(2, :)) - min(a(2, :))
    
por 12.05.2015 / 03:14
0

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,:))

    
por 19.01.2015 / 19:47

Tags