MATLAB: Laden von innerhalb der Funktion

7

Ich habe eine MATLAB-Funktion, die Zugriff auf die Daten einiger largeFile.mat benötigt. Wenn ich (um den globalen Namespace nicht zu verschmutzen) den Ladebefehl in die Funktion lege, wird MATLAB jedes Mal, wenn die Funktion aufgerufen wird, largeFile neu laden oder ist smart genug, um largeFile zwischen Aufrufen zwischenzuspeichern? ZB

%Vor%

Soll ich den Ladebefehl innerhalb der Funktion behalten, oder sollte ich es einmal machen und die Daten von largeFile als arg übergeben? Danke!

    
AlcubierreDrive 21.02.2011, 13:00
quelle

2 Antworten

6

Matlab lädt es jedes Mal, wenn es aufgerufen wird, also ist es viel schneller, es einmal aufzurufen und es als Eingabe zu geben. Wenn Sie Ihren Arbeitsbereich nicht überladen möchten, sollten Sie Ihre Datei in eine Struktur wie diese laden

L = laden ('largeFile.mat');

BEARBEITEN: Ich habe einen kurzen Test auf Ihre hallo () Funktion und eine meiner .mat Dateien gemacht. Laden Sie es in die Funktion und 100 Mal ausgeführt habe ich 43,29 Sekunden. Lädt man es einmal und gibt es als Eingabe benötigt 0,41 Sekunden für 100 Läufe, so ist der Zeitunterschied enorm.

    
Ghaul 21.02.2011, 13:31
quelle
18

Die Lösung von Ghaul (Laden der Daten in eine Struktur (und übergebe es als Argument), was ich normalerweise vorschlagen würde, da es die Notwendigkeit vermeidet, Dateinamen / Pfade in Ihren Funktionen fest zu codieren, was erfordert, dass Sie Ihre Funktion jedes Mal ändern, wenn sich der Dateiname oder Speicherort ändert.

Der Vollständigkeit halber gibt es jedoch eine andere Lösung: Verwenden Sie persistente Variablen . Dies sind lokale Variablen für die Funktion, die ihre Werte im Speicher zwischen Aufrufen der Funktion beibehalten. Für Ihre Situation könnten Sie dies tun:

%Vor%     
gnovice 21.02.2011 15:24
quelle

Tags und Links