MATLAB Удалить только некоторые нули из матрицы - PullRequest
1 голос
/ 27 октября 2011

Я видел множество ответов относительно того, как удалить начальные и / или конечные нули и как удалить все нули из вектора или матрицы. Что мне нужно сделать, это только удалить некоторые из них. У меня есть две матрицы, и я только хочу удалить записи, где они обе равны нулю. Это двумерные координаты x и y, решаемые с использованием характеристик (я могу дать более подробную информацию, если необходимо), и я просто хочу удалить значения, в которых обе матрицы содержат нули с одинаковыми индексами Я могу легко конвертировать матрицы в векторы и работать с векторами, поэтому любая помощь в любом случае будет принята с благодарностью.

1 Ответ

5 голосов
/ 27 октября 2011

Для простоты предположим, что вы используете векторы с именами X и Y (одинаковой длины) и хотите удалить только те записи, в которых оба вектора равны нулю. Вот как (не проверено):

% Find the indexes where either X or Y is different from zero
% (these are the indexes of the components we want to keep)
I = find(X~=0 | Y~=0);

% Select the desired components from X and Y
X=X(I);
Y=Y(I);

Редактировать: Как Оли указал ниже (и Стефано объяснил далее), вы должны использовать логическое индексирование для повышения производительности.

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