Для формирования цикла к вектору для производительности в Matlab - PullRequest
0 голосов
/ 14 сентября 2018

У меня возникли проблемы с обработкой циклического формирования вектора в Matlab. Это часть обработки изображений. (Об управлении светом) Мой оригинальный код соруса ниже.

for i=1:1:p1
    for j=1:q1
        if A(i,j) <=25
            A(i,j) =0;
        end
    end
end

Как я могу изменить этот код на вектор для повышения производительности? Я уже проверил этот URL (https://mathworks.com/help/matlab/matlab_prog/vectorization.html).

1 Ответ

0 голосов
/ 14 сентября 2018

Вам необходимо использовать логическое индексирование:

I = A<=25;

- это логический массив, который true, где A меньше или равен 25. Вы можете использовать этот массив для индексации в A:

A(I) = 0;

устанавливает элементы A в 0, где I - истина.

Все это может быть записано как одно утверждение:

A(A<=25) = 0;

[Я уверен, что здесь уже спрашивали об этом, но я не могу найти дубликатов.]

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