¿Por qué los bucles for MATLAB tienen un rendimiento computacional relativamente pobre en términos de tiempo de cálculo?

El código de Matlab se interpreta en lugar de compilarse, lo que lo dañará en estructuras simples como los bucles. La fortaleza radica en operaciones individuales altamente ajustadas (cálculos de matriz, por ejemplo) y una codificación más fácil (evitando la mayoría de las preocupaciones sobre el manejo de la memoria, en particular).

En un proyecto hace unos años (procesamiento de video para una aplicación médica) un estudiante de investigación había desarrollado un código de Matlab. Funcionó, pero tardó unos 30 segundos por cuadro; una simple traducción del código a C ejecutó los mismos cálculos aproximadamente tres órdenes de magnitud más rápido, incluso antes de la sintonización. Sin embargo, el código de Matlab fue mucho más fácil para que ese estudiante escribiera y probara, experimentando con diferentes umbrales para cada operación sin necesidad de aprender C.

Personalmente, diría que cuando te preocupes por la sobrecarga de ejecución de los bucles y que tu código funcione correctamente (¡recuerda lo que dicen sobre la optimización prematura!) Probablemente sea hora de pasar a un lenguaje compilado de nivel inferior para exprimir esos últimos milisegundos fuera. Hasta ese momento, los segundos de tiempo de CPU ahorrados en cada ejecución se eliminan fácilmente con unas pocas horas estudiando un volcado de memoria para encontrar un error de manejo de memoria.