Sommando una riga escludendo il suo valore minimo


1

Ho bisogno di aiuto per favore. Diciamo che ho una matrice:

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

Voglio trovare la somma della riga 2, senza includere il valore minimo della riga 2 (che è 1), ho provato questo:

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

ma non funziona. Qualcuno può aiutare?

Risposte:


2

Un altro modo per farlo senza indicizzare è sottrarre il minimo dalla somma,

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

0

Il tuo codice

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

ti dice quante voci nella seconda riga non sono il minimo di 1. Questo perché l'argomento a sum,

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

è un array logico che indica se ciascuno dei numeri in quella riga è diverso da 1 e i valori logici false e true sono interpretati come numeri 0 e 1 da sum.

Quello che vuoi fare è usare questi valori per l'indicizzazione logica nella riga e sommare solo gli elementi selezionati

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

o più corto

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

Naturalmente per la generalità sarebbe meglio sostituire 1l'espressionemin(a(2,:))

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.