Если вы хотите «сохранить» каждый четвертый столбец, то синтаксис будет:
toKeep = 4:4:8;
A = rand(3,8) % Insert your matrix
B = A(:,toKeep);
т.е. Вы присваиваете эти значения новой матрице. В вашем случае вы хотите удалить их, поэтому вы можете просто назначить пустую матрицу тем местам, которая практически удаляет их.
toRemove = 4:4:8; %Every fourth column
A = rand(3,8) % Insert your matrix
A(:,toRemove) = [];
РЕДАКТИРОВАТЬ 1
Как правильно заметил Вольф в комментариях, вы можете немного улучшить это, написав toRemove
вместе с A(:,toRemove)
и используя ключевое слово end
, чтобы у вас было:
A = rand(3,8) % Insert your matrix
A(:,4:4:end) = [];
В этом случае вам не нужно беспокоиться о размере матрицы.
РЕДАКТИРОВАТЬ 2:
Этот подход, конечно, также будет работать для общих случаев без периода. Переменная toRemove
будет просто содержать индексы удаляемых столбцов, например,
toRemove = randperm(8,randi(5)); %Select up to 5 random columns to remove
A = rand(3,8) % Insert your matrix
A(:,toRemove) = [];
PS. Если вы хотите сохранить исходную матрицу, A
вы можете сначала присвоить ее B=A;
, а затем выполнить операцию с B
.