¿Es MATLAB el que corre lento en su computadora o más bien los programas que ha escrito en MATLAB?
MATLAB hace un uso intensivo de la asignación y reasignación de memoria dinámica; El cambio de tamaño de matriz o matriz puede ser muy lento y no determinista; Si una matriz o matriz crece, se asigna nueva memoria y los datos existentes se copian en la nueva memoria antes de eliminar la copia anterior. Puede evitar esta pérdida de memoria preasignando tales matrices: por ejemplo, este código:
x = 0;
for k = 2:1000
x(k) = x(k-1) + 5;
end
hace x
que se cambie el tamaño en cada iteración y se ejecutará muy lentamente. En comparación, el siguiente código:
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end
asigna previamente la matriz para que no se produzca el cambio de tamaño y se ejecute considerablemente más rápido.
El sitio web de MathWorks tiene una página completa que detalla esta y otras técnicas para mejorar el rendimiento; la página cubre lo siguiente:
- Matrices de preasignación
- Utilice matrices distribuidas para grandes conjuntos de datos
- Cuando sea posible, reemplace por con parfor (Paralelo para)
- Limitar tamaño y complejidad
- Asignación a variables
- Uso de operadores lógicos apropiados
- Sobrecarga de funciones incorporadas
- Las funciones son generalmente más rápidas que las secuencias de comandos
- Cargar y guardar son más rápidos que las funciones de E / S de archivo
- Vectorización de bucles
- Evitar procesos de fondo grandes
Tenga en cuenta que la solución que ha sugerido es la última en la lista de MathWorks, primero debe mirar todos los otros puntos, a menos que esté haciendo algo que obviamente requiera recursos como ejecutar una máquina virtual o reproducir video de alta definición al mismo tiempo que ejecuta MATLAB , mirar otros procesos en ejecución probablemente está sudando las cosas pequeñas.