Schone ich Speicher in MATLAB, indem ich Variablen global deklariere, anstatt sie als Argumente zu übergeben?

Ich bin neu bei MATLAB, es war nicht in der Stellenbeschreibung enthalten, und ich war gezwungen, die Stelle für die Person zu übernehmen, die den von meinem Unternehmen verwendeten Code geschrieben und gepflegt hat. Das Leben ist hart.

Der Typ, von dem ich übernehme, hat mir gesagt, dass er alle großen Datenvektoren als deklariert hatglobal, um Speicherplatz zu sparen. Genauer gesagt: Wenn eine Funktion eine andere Funktion aufruft, erstellt er beim Übergeben keine Kopie der Daten.

Ist das wahr? ich leseStrategien zur effizienten Speichernutzungund es sagt das

Beachten Sie beim Arbeiten mit großen Datenmengen, dass MATLAB eine temporäre Kopie einer Eingabevariablen erstellt, wenn die aufgerufene Funktion ihren Wert ändert. Dadurch wird der zum Speichern des Arrays erforderliche Speicher vorübergehend verdoppelt, wodurch MATLAB einen Fehler generiert, wenn nicht genügend Speicher verfügbar ist.

Es sagt etwas sehr ÄhnlichesSpeicherzuweisung für Array #Funktionsargumente:

Wenn Sie einer Funktion eine Variable übergeben, übergeben Sie tatsächlich einen Verweis auf die Daten, die die Variable darstellt. Solange die Eingabedaten von der aufgerufenen Funktion nicht verändert werden, zeigen die Variable in der aufrufenden Funktion und die Variable in der aufgerufenen Funktion auf dieselbe Stelle im Speicher. Wenn die aufgerufene Funktion den Wert der Eingabedaten ändert, erstellt MATLAB eine Kopie des ursprünglichen Arrays an einem neuen Speicherort, aktualisiert diese Kopie mit dem geänderten Wert und verweist die Eingabevariable in der aufgerufenen Funktion auf dieses neue Array.

So ist es wahr, dass mitglobal könnte besser sein? Es scheint ein wenig schlampig zu sein, all die großen Daten wie folgt zu deklarierenglobal, anstatt sicherzustellen, dass keiner der Codes sein Eingabeargument ändert. Liege ich falsch? Verbessert dies wirklich die RAM-Auslastung?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage