Обнуление всего столбца, если один элемент столбца равен нулю - PullRequest
0 голосов
/ 26 мая 2018

допустим, у меня есть эта матрица:

 B = [16 0 3 13;5 11 10 0;9 0 6 12;4 14 15 1];

 if(columnContainzero (zeros(thatColumn))

Есть ли какая-либо функция для этого?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Если вы не возражаете против выполнения операции sum вдоль строк, вы можете использовать эту простую однострочную строку:

B(:,sum(B==0)>0)=0
0 голосов
/ 26 мая 2018

Вы можете использовать логическое индексирование:

ColumnsContainingZeros = any( B == 0, 1 );
% >> ColumnsContainingZeros = [0 1 0 1]

Затем сделать все строки в этих столбцах равными 0

B(:, any(B==0,1)) = 0;
% >> B = [ 16     0     3     0
%           5     0    10     0
%           9     0     6     0
%           4     0    15     0 ]

Чтобы выполнить ту же операцию со строками вместо столбцов,используйте any(B==0,2) в качестве индекса и B(any(B==0,2), :) = 0, чтобы изменить все столбцы в этих строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...