Введение в векторизацию в MATLAB - какие-либо хорошие учебные руководства? [закрытый]

13
задан Gacek 15 August 2013 в 14:45
поделиться

2 ответа

Вот пара учебников MathWorks, на которые я часто ссылаюсь в качестве ссылок по этому вопросу:

А вот одна из записей блога Лорена, в которой хорошо показана векторизация кода для конкретного примера задачи:

Конкретный тип задачи, который вы привели в качестве примера, включающий обработку подматриц заданной матрицы, может быть векторизован различными способами в зависимости от того, какую операцию вы выполняете. Возможно, вы сможете использовать CONV2 или FILTER2 вместо вложенных циклов for. В Панели инструментов обработки изображений также есть ряд функций, которые обрабатывают окрестности и блочную обработку матриц, например NLFILTER и BLOCKPROC. Документация к этим функциям должна помочь вам понять, как использовать их в качестве способа векторизации вашего кода.

8
ответ дан 2 December 2019 в 00:58
поделиться

Практическое правило состоит в том, что вы должны использовать встроенные функции Matlab, которые работают с массивами вместо циклов, когда это возможно. Например, мне кажется, что описанная вами проблема может быть сформулирована как свертка, а затем вы можете использовать функции matlab conv2 () или filter () для ее реализации. без петли.

Другой общий прием - попытаться сформулировать проблему в терминах матричных операций.

Вы также должны предпочитать торговать пространством на время. Допустим, у вас есть n-мерный вектор v и матрица m x n M , где каждая строка также является n-мерным вектором. Допустим, вам нужны евклидовы расстояния между v и каждой строкой M . В этом случае вы должны использовать repmat () , чтобы создать матрицу, содержащую m копий v , и вычислить расстояния, используя поэлементные операции с массивами без цикла.

1
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: