Как заменить столбец определенного значения на нули в Matlab?

Вопрос: У меня есть матрица вроде: 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 Есть ли какой-нибудь умный способ сделать это без двух циклов? Вся помощь

Вопрос:

У меня есть матрица вроде:

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;

Оцените статью
Добавить комментарий