Hallo,
Harald ein Jedi Meister hier im Forum hat mich darauf aufmerksam gemacht, dass ich doch die globalen Variablen in meinem Code vermeiden sollte. Da hat er recht, aber wie? Hier habe ich einen Auszug aus meinem Code den ich auch erklären werde:
- Ich lade einen Datensatz .mat und mache daraus einen surf plot in einem figure. In dem Figure habe ich auch noch einen Slider und ein popupmenu
- der Slider dient dazu in dem geladenen Datensatz durch zu gehen und jeweils einen neuen surf pot zu machen. Das sieht dann aus wie eine Animation
- das popup dient dazu einen anderen Datensatz zu laden mit dem ich dann mit dem Silder wieder durchgehen kann.
Code:
function globalstest
global Falles
load('satzA.mat')% dauert 2 sec % aus dem load kommen dat1,dat2,matrixA
[Y,X] = meshgrid(dat1,dat2);
for j=1:15 for i=0:71
Falles(:,:,i+1,j)=mean(double(matrixA(:,:,1+i*7:7+i*7,j)),3);
end end
Statt die Daten mit LOAD direkt in den Workspace zu importieren und dann total verwurmt per EVAL darauf zuzugreifen, ist es viel effizienter, klarer, weniger fehleranfällig und schneller, wenn Du den Output von LOAD verwendest:
Hallo und danke erst mal.
zu Jan: was soll das mit dem eval.
Ich weiss selber das das bloed ist, aber ich kann im popup einen anderen datensatz (andrer Name usw.) laden. Einmal sind es bei mir Temperaturen, einmal Spannungen. Dafuer gibt es andere .mat Dateien die ich laden muss (jede hat ca. 100MB)
zu Harald: Falles in den callback
das hab ich am Anfang natuerlich versucht, aber Falles aendert sich halt wegen des popup (Spannung Temperatur). Was passiert dann: Ich lade am Anfang die Spannungen uebergebe Falles an den slider und animiere alles durch. Geht super. Jetzt lade ich mit dem popup die Temperaturen und wenn ich jetzt den Slider benutze springt der wieder auf die Spannungen! Das ist ja das Problem warum ich die globalen Variablen verwende.
Kompliziert ich weiss
Was eval angeht, stimme ich Jan zu (und ich hätte auch darauf aufmerksam gemacht, wenn es mir ins Auge gefallen wäre). eval/evalin lässt sich nahezu immer vermeiden. Das sollte man auch tun, um so schwer lesbaren und schwierig zu debuggenden Code zu vermeiden. Versuch doch mal, Jans Tipp umzusetzen - es müsste meines Erachtens funktionieren.
Prima!
Dann hat das Forum sich ja mal wieder gelohnt. Schön.
Gruß, Jan
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.