MATLAB работает медленно на вашем компьютере или программы, которые вы написали в MATLAB?
MATLAB интенсивно использует динамическое выделение и перераспределение памяти; Изменение размера матрицы или массива может быть очень медленным и недетерминированным; если матрица или массив растут, выделяется новая память, а существующие данные копируются в новую память перед удалением старой копии. Вы можете избежать перегрузки памяти, предварительно выделив такие массивы: например, этот код:
x = 0;
for k = 2:1000
x(k) = x(k-1) + 5;
end
вызывает изменение размера x
на каждой итерации и будет работать очень медленно. Для сравнения следующий код:
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end
предварительно распределяет массив так, чтобы изменение размера не происходило и работало значительно быстрее.
На веб-сайте MathWorks есть целая страница с подробным описанием этого и других методов повышения производительности; страница охватывает следующее:
- Предварительно распределенные массивы
- Используйте распределенные массивы для больших наборов данных
- Если возможно, замените на parfor (параллельно для)
- Ограничение размера и сложности
- Присвоение переменным
- Использование соответствующих логических операторов
- Перегрузка встроенных функций
- Функции, как правило, быстрее, чем сценарии
- Загрузка и сохранение выполняются быстрее, чем функции ввода-вывода в файл
- Циклы векторизации
- Избегайте больших фоновых процессов
Обратите внимание, что решение, которое вы предложили, является последним в списке MathWorks, вам следует сначала рассмотреть все остальные моменты, если вы не делаете что-то явно ресурсоемкое, например, запуск виртуальной машины или воспроизведение видео высокой четкости одновременно с запуском MATLAB. , глядя на другие процессы, работающие, вероятно, потеют мелочи.