Сохраняю ли я память в MATLAB, объявляя переменные глобальными вместо передачи их в качестве аргументов?

Я новичок в MATLAB, его не было в должностной инструкции, и я был вынужден взять на себя ответственность за человека, который написал и поддерживал код, который использует моя компания. Жизнь тяжелая.

Парень, от которого я вступаю во владение, сказал мне, что он объявил все векторы больших данных какglobal, чтобы сохранить память. Более конкретно, так что когда одна функция вызывает другую функцию, он не создает копию данных, когда передает ее.

Это правда? Я читаюСтратегии для эффективного использования памятии это говорит о том, что

When working with large data sets, be aware that MATLAB makes a temporary copy of an input variable if the called function modifies its value. This temporarily doubles the memory required to store the array, which causes MATLAB to generate an error if sufficient memory is not available.

Это говорит что-то очень похожее наВыделение памяти для массива # Аргументы функций:

When you pass a variable to a function, you are actually passing a reference to the data that the variable represents. As long as the input data is not modified by the function being called, the variable in the calling function and the variable in the called function point to the same location in memory. If the called function modifies the value of the input data, then MATLAB makes a copy of the original array in a new location in memory, updates that copy with the modified value, and points the input variable in the called function to this new array.

Так правда ли, что использованиеglobal может быть лучше? Кажется, немного небрежно объявить все большие данные какglobalвместо того, чтобы убедиться, что ни один из кодов не изменяет свой входной аргумент. Я ошибся? Это действительно улучшает использование оперативной памяти?

Ответы на вопрос(4)

Ваш ответ на вопрос