Расщепление матрицы на основе ее содержимого в MATLAB - PullRequest
1 голос
/ 25 июля 2011

Матрица имеет m строк и n столбцов (n - это число, не превышающее 10), а n-й столбец содержит 1 или 0 (двоичный код).Я хочу использовать этот двоичный файл как решение, чтобы удалить связанную строку (если 1, или иначе, если 0).Я понимаю, что это можно сделать с помощью итераций с использованием условного IF.

Однако это может стать непрактичным для матриц, число строк m которых исчисляется сотнями (до 1000).Какие еще процедуры доступны?

1 Ответ

4 голосов
/ 25 июля 2011

Вы можете использовать logical типы данных для индексации .Например,

M =

 1     2     0
 4     5     1
 7     8     0
M = [1 2 0;4 5 1;7 8 0];
v = (M(:,n) == 1);
M(v,2) = 1;

M =

 1     2     0
 4     1     1
 7     8     0

Теперь вы установиливсе элементы в столбце со 2 по 1, если соответствующий элемент в столбце n имеет значение true.

Обратите внимание, что v = (M(:,n) == 1) преобразует n-й столбец в логический вектор.Вы можете сделать то же самое с v = logical(M(:,n));

Я бы порекомендовал эту запись в блоге для подробного изучения логической индексации.

Обновление:

ЕслиВы хотите стереть строки, а затем использовать:

M(v,:) = [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...