¿Conservo memoria en MATLAB declarando variables globales en lugar de pasarlas como argumentos?

Soy nuevo en MATLAB, no estaba en la descripción del trabajo y me vi obligado a asumir el control de la persona que escribió y mantuvo el código que usa mi empresa. La vida es dura.

El tipo del que me ocupo me dijo que declaró todos los grandes vectores de datos comoglobal, para ahorrar memoria. Más específicamente, de modo que cuando una función llama a otra función, no crea una copia de los datos cuando la pasa.

¿Es esto cierto? Yo leoEstrategias para el uso eficiente de la memoria, y dice que

Cuando trabaje con grandes conjuntos de datos, tenga en cuenta que MATLAB hace una copia temporal de una variable de entrada si la función llamada modifica su valor. Esto duplica temporalmente la memoria requerida para almacenar la matriz, lo que hace que MATLAB genere un error si no hay suficiente memoria disponible.

Dice algo muy similar en.Asignación de memoria para la matriz # Argumentos de función:

Cuando pasa una variable a una función, en realidad está pasando una referencia a los datos que representa la variable. Mientras los datos de entrada no sean modificados por la función a la que se llama, la variable en la función que llama y la variable en la función llamada apuntan a la misma ubicación en la memoria. Si la función llamada modifica el valor de los datos de entrada, MATLAB hace una copia de la matriz original en una nueva ubicación en la memoria, actualiza esa copia con el valor modificado y apunta la variable de entrada en la función llamada a esta nueva matriz.

Entonces, ¿es cierto que usarglobal ¿Puede ser mejor? Parece un poco descuidado declarar alegremente todos los datos grandes comoglobal, en lugar de asegurarse de que ninguno de los códigos modifique su argumento de entrada. ¿Me equivoco? ¿Esto realmente mejora el uso de RAM?

Respuestas a la pregunta(4)

Su respuesta a la pregunta