Выбор только определенного количества строк, удовлетворяющих условию - PullRequest
35 голосов
/ 13 ноября 2011

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

Предположим, у вас есть следующая матрица данных:


    A =

        1   11   22   33
       44   13   12   33
        1   14   33   44

Теперь я хотел бы удалить все строки этой матрицы, которые не выполняются, например, следующее условие.


    octave:6> A(:, 4) == 33
    ans =

       1
       1
       0

И я получу матрицу этой формы, которая выбирает только эти строки:


    A_new =

        1   11   22   33
       44   13   12   33

Я знаю, что это возможно с помощью некоторых циклов. Но может быть, есть более чистое решение, например с помощью предоставленной стандартной библиотеки? Это было бы здорово:]

Некоторые похожие вопросы также были опубликованы для R: В R выберите строки матрицы, которые удовлетворяют условию

1 Ответ

56 голосов
/ 13 ноября 2011

Попробуйте:

A = [
    1   11   22   33
    44  13   12   33
    1   14   33   44
];
idx = ( A(:,4)==33 );
A_new = A(idx,:)

Используется логическое индексирование

...