1

Мне нужна помощь, пожалуйста. Допустим, у меня есть матрица:

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

Я хочу найти сумму строки 2, без учета минимального значения строки 2 (это 1), я пробовал это:

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

Но это не работает. Может кто-нибудь помочь?

2 ответа2

2

Другой способ сделать это без индексации - вычесть минимум из суммы,

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

Ваш код

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .