Вопрос:
У меня есть матрица вроде:
A= 1 2 7 4 3 2 8 5 2 2 9 6
и хочет обнулить столбец только с 2 и получить что-то вроде:
A= 1 0 7 4 3 0 8 5 2 0 9 6
Есть ли какой-нибудь умный способ сделать это без двух циклов? Вся помощь очень ценится.
спасибо
Лучший ответ:
Вы можете использовать all чтобы найти столбец всех 2-х
all2 = all( A == 2, 1 ); % check along first dim A(:,all2 ) = 0; % make column zero
Если вы хотите установить ноль всех столбцов одного и того же номера (не только 2), вы можете использовать bsxfun, чтобы помочь
allSame = all( bsxfun( @eq, A, A(1,:) ), 1 ); A( :, allSame ) = 0;