WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Was macht Matlab so langsam?

 

AJM
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2012, 23:36     Titel: Was macht Matlab so langsam?
  Antworten mit Zitat      
Guten Abend,

leider arbeite ich sehr selten mit Matlab und habe nun ein Programm geschrieben, dass zwar mir die gewünschten Ergebnisse ausgibt aber sehr sehr lange dafür rechnet. Von daher würde es mir sehr helfen, wenn ihr mir sagt, welcher Befehl mein Programm so langsam macht und was eine Alternative wäre. Da ich stark vermute dass das string einlesen mein Programm so langsam macht, möchte ich euch hier nicht mit code erschlagen und zeige erstmal einen Ausschnitt. Sollte euch was aus der Beschreibung auffallen bitte gebt bescheid, dann schreibe ich gerne den Code.

Ich habe eine Differentialgleichung 2. Ordnung 3x3. Diese wird mir in einem extra Programm in Abhängigkeit von Symbolen berechnet und mittels eines globalen Strangs ausgegeben. Ist diese Gleichung einmal generiert (was nicht sehr Lange dauert) möchte ich diese nun integrieren.

Dazu benutzte ich eine Eingabedatei in der man die Variablen (Längen, Massen etc) einstellen kann und diese dann via Funktion an den Integrator übergeben werden. Mein Integrator sieht dann folgendermaßen aus:

Code:
function xdot = integrator(t,x)
global dx1;
global dx2;
global dx3;
xdot=zeros(14,1);
g=x(7); m1=x(8); m2=x(9); m3=x(10); l1=x(11); l2=x(12); l3=x(13); Mtorq = x(14); l0 = x(15);
%-------------------------------------------------
varalpha = x(1);
varbeta = x(2);
vargamma = x(3);
dvaralpha = x(4);
dvarbeta = x(5);
dvargamma = x(6);
%-------------------------------------------------
dxe1 = eval(dx1);
dxe2 = eval(dx2);
dxe3 = eval(dx3);
%--------------------------------------------------
x(1) = x(4);
x(2) = x(5);
x(3) = x(6);
x(4) = dxe1;
x(5) = dxe2;
x(6) = dxe3;
y = [x(1);x(2);x(3);x(4);x(5);x(6)];


xdot = [y; g; m1; m2; m3; l1; l2; l3; Mtorq; l0];



Zum Schluss lasse ich mir dann noch gewünschte Werte (Winkel, Verschiebungen etc) polten und das ganze system als animation ausgeben.

Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 10.07.2012, 06:55     Titel:
  Antworten mit Zitat      
Es gibt in Matlab den sogenannten "Profiler". Im Editor unter Tools/Open Profiler zu sehen. Dieser Zeigt dir an wie lange die einzelnen Abschnitte im Code brauchen und was am längsten dauert.
Vielleicht hilft dir dies mal weiter.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 07:25     Titel:
  Antworten mit Zitat      
Warum übergibst du denn die Variablen als String? Du kannst sie doch vorher mit str2num (besser als eval) umwandeln und anschließend als double übergeben (hier könnte man noch die globale Definition der Variablen vermeiden).

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 08:55     Titel:
  Antworten mit Zitat      
Thomas84 hat Folgendes geschrieben:
Warum übergibst du denn die Variablen als String? Du kannst sie doch vorher mit str2num (besser als eval) umwandeln und anschließend als double übergeben (hier könnte man noch die globale Definition der Variablen vermeiden).

viele Grüße
Thomas


Ganz einfach, weil ich es nicht besser wusste Wink Ich werde es aber auf jedenfalls mal so probieren! Danke!

@Goofy: Dir auch vielen Dank für den Tip.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2012, 08:59     Titel:
  Antworten mit Zitat      
Hallo,

wenn du weitere Unterstützung brauchst, bitte die gesamte Anwendung zur Verfügung stellen. Ein weiterer Aspekt könnte z.B. die Wahl des DGL-Lösers (odexy) sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 09:18     Titel:
  Antworten mit Zitat      
Hi, wenn du es anbietest sehr sehr gerne Smile

Vlt noch eine kleine Erkaerung vornweg: Es handelt sich um eine Kurbelschwinge. Diese besteht aus einem Doppelpendel und einem einfachen Pendel. Beide Pendel bewegen sich wie sie sollen.
Jetzt möchte ich diese über Zwangsbedingungen jedoch verkoppeln. (Hier constraintforce) Und hier steigt mir das Programm aus, bzw rechnet sich zu Tode. Dass es funktioniert kann ganz einfach getestet werden, z.B. durch C = varalpha. Was bedeutet die Änderung des Winkels alpha ist 0.


Dieser Code baut mir meine Differentialgleichung (ich werde das mit num2string später testen)

Code:
%function build_ode(ivp, duration, fps)
clc;
global dx1;
global dx2;
global dx3;
global check
syms m1 m2 m3 l1 l2 l3 l0 Mtorq g;
syms varalpha varbeta dvaralpha dvarbeta ddvaralpha ddvarbeta dddvaralpha dddvarbeta;
syms vargamma dvargamma ddvargamma dddvargamma
massestarr = {dvaralpha, dvarbeta, ddvaralpha, ddvarbeta, Mtorq, g };
q = [varalpha;varbeta];
qp = [dvaralpha;dvarbeta];
qpp = [ddvaralpha;ddvarbeta];
q3 = vargamma;
qp3 = dvargamma;
qpp3 = ddvargamma;
coriolis = [varalpha; varbeta; vargamma; dvaralpha^2;dvarbeta^2;dvargamma^2;];
Ccoriolis = [dvaralpha^2;dvarbeta^2;dvargamma^2];
R1 = [1/2*cos(varalpha)*l1;1/2*sin(varalpha)*l1];
R2 = [cos(varalpha)*l1+1/2*cos(varbeta)*l2;sin(varalpha)*l1+1/2*sin(varbeta)*l2];
R3 = [1/2*cos(vargamma)*l3;1/2*sin(vargamma)*l3];
abl = [q; qp];
ablp = [qp; qpp];
abl3 = [q3; qp3];
ablp3 = [qp3; qpp3];
V1 = jacobian(R1,abl)*ablp;
V2 = jacobian(R2,abl)*ablp;
V3 = jacobian(R3,abl3)*ablp3;
T = 1/2*m1*(V1.')*V1+1/24*m1*l1^2*(dvaralpha)^2+1/24*m2*l2^2*(dvarbeta)^2+1/2*m2*(V2.')*V2;
T3 = 1/2*m3*(V3.')*V3+1/24*m3*l3^2*(dvargamma)^2;
T2 = jacobian(T, q);
T2 = T2.';
T23 = jacobian(T3, q3);
T23 = T23.';
T1 = jacobian(T, qp);
T1 = jacobian(T1, abl)*ablp;
T13 = jacobian(T3, qp3);
T13 = jacobian(T13, abl3)*ablp3;
Tlagrangestarr= T1 - T2;
Tlagrangestarr3= T13 - T23; %T23 = 0 => koennte rausgenommen werden.
%----------------------------------------------------
Q = [Mtorq; 0];
Vpot = m1*g*[0 1]*R1 +m2*g*[0 1]*R2;
Vpot = jacobian(Vpot, q);
Vpot = Vpot.';
Vpot3 = m3*g*[0 1]*R3;
Vpot3 = jacobian(Vpot3, q3);
%----------------------------------------------------
Lagrange = Tlagrangestarr + Vpot - Q;
Lagrange3 = Tlagrangestarr3 + Vpot3;
%----------------------------------------------------
Lagrange1 = [1 0]*Lagrange;
Lagrange2 = [0 1]*Lagrange;
Mtt = subs(Lagrange1, massestarr, {0, 0, 1, 0, 0, 0});
Mtphi = subs(Lagrange1, massestarr, {0, 0, 0,1, 0, 0});
Mphit = subs(Lagrange2, massestarr, {0, 0, 1, 0,0 , 0});
Mphiphi = subs(Lagrange2, massestarr, {0, 0, 0, 1, 0, 0});
Mass = [Mtt Mtphi; Mphit Mphiphi];
Mass3 = subs(Lagrange3, {ddvargamma, g}, {1, 0});
%----------------------------------------------------
Qe = subs(Lagrange, massestarr, {0, 0, 0, 0, Mtorq, g});
Qe3 = subs(Lagrange3, {ddvargamma}, {0});
%----------------------------------------------------
Rest = Lagrange - Mass*[ddvaralpha; ddvarbeta] +Qe;
Rest1 = [1,0]*Rest;
Rest2 = [0,1]*Rest;
R1 = subs(Rest1, massestarr, {0, 1, 0, 0, 0, 0});
R2 = subs(Rest2, massestarr, {1, 0, 0,0, 0, 0});
Rphit = subs(Rest2, massestarr, {1, 0, 0, 0,0 , 0});
Rphiphi = subs(Rest2, massestarr, {0, 1, 0, 0, 0, 0});
Qv = [0 R1; R2 0];
%----------------------------------------------------
CMassmatrix = sym(zeros(3,3));
CMassmatrix(1:2,1:2)= Mass;
CMassmatrix(3,3)= Mass3;
CForcematrix(1:2)= -Qe;
CForcematrix(3)= -Qe3;
CForcematrix = CForcematrix.';
CCoriolismatrix = sym(zeros(3,3));
CCoriolismatrix(1:2,1:2)= -Qv;
CCoriolismatrix(3,3)= 0;
h = simplify(CForcematrix + CCoriolismatrix*Ccoriolis);
%--------------------Constraints---------------------------------
% C1 = varalpha
% C2 = vargamma
C1 = l1*cos(varalpha) + l2*cos(varbeta)- l0-cos(vargamma)*l3;
C2 = sin(varalpha)*l1+sin(varbeta)*l2-sin(vargamma)*l3;
% --------------------Rechenzeit sparen---------------------------------
INVMassmatrix = inv(CMassmatrix);
C= [C1;C2];
qges = [q;q3];
Cq = simplify(jacobian(C, qges));
 lambda1 = -Cq*INVMassmatrix*(Cq.');
 lambda2 =simplify((Cq*INVMassmatrix*h));
 lambda = lambda1\lambda2;
 constraintforce = simplify((Cq.')*lambda);
%--------------------Bewegungsgleichung---------------------------
entkopcomplicated = INVMassmatrix*(h+constraintforce);
entkop = simplify(entkopcomplicated);
dx1 = char([1,0,0]*entkop);
dx2 = char([0,1,0]*entkop);
dx3 = char([0,0,1]*entkop);
check = 1;
%hurryup(ivp, duration, fps);
 


Dieser Code startet meine Anwendung

Code:
% Damit Kurbelschwinge sich drehen kann muss gelten:
% l1 +2(l2-l0) = l3
close all
varalpha                = 0;
dvaralpha              = 0;
varbeta                = 0.6669463445036642306721815107032;
dvarbeta              = 0;
vargamma               = pi/3;
dvargamma              = 0;
g                   = 9.81;
m1                  = 15;
m2                  = 21;
m3                  = 2;
l1                  = 3;
l2                  = 7;
l3                  = 5;
l0                  = 6;
duration            = 10;
fps                 = 60;
Mtorq               = 0;
ivp=[varalpha; varbeta; vargamma; dvaralpha; dvarbeta; dvargamma;g; m1; m2;m3; l1; l2; l3; Mtorq; l0];
%ex = exist('ex','var'); %checked ob Herleitung der Bewegungsgleichungen noetig ist.
%if (ex == 1)
   hurryup(ivp, duration, fps);  
 
%else
 %  build_ode(ivp, duration, fps);
 %  ex =1;
%end


Hier findet sich der Integrator:

Code:
function xdot = integrator(t,x)
global dx1;
global dx2;
global dx3;
xdot=zeros(14,1);
g=x(7); m1=x(8); m2=x(9); m3=x(10); l1=x(11); l2=x(12); l3=x(13); Mtorq = x(14); l0 = x(15);
%-------------------------------------------------
varalpha = x(1);
varbeta = x(2);
vargamma = x(3);
dvaralpha = x(4);
dvarbeta = x(5);
dvargamma = x(6);
%-------------------------------------------------
dxe1 = eval(dx1);
dxe2 = eval(dx2);
dxe3 = eval(dx3);
%--------------------------------------------------
x(1) = x(4);
x(2) = x(5);
x(3) = x(6);
x(4) = dxe1;
x(5) = dxe2;
x(6) = dxe3;
y = [x(1);x(2);x(3);x(4);x(5);x(6)];


xdot = [y; g; m1; m2; m3; l1; l2; l3; Mtorq; l0];
 


und hier meine Ausgabedatei:

Code:
function hurryup(ivp, duration, fps)
clc;
clf;
figure;
interval=[0, duration];
nframes=duration*fps;
sol=ode45(@integrator,[0 duration], ivp);
t = linspace(0,duration,nframes);
y=deval(sol,t);
varalpha=y(1,:)'; dvaralpha=y(4,:)';
varbeta=y(2,:)'; dvarbeta=y(5,:)';
vargamma=y(3,:)'; dvargamma=y(6,:)';
l1=ivp(11); l2=ivp(12); l3=ivp(13);l0=ivp(15);
% varalpha=x(:,1); dtvaralpha=x(:,2);
% varbeta=x(:,3); dtvarbeta=x(:,4);
% l1=ivp(Cool; l2=ivp(9);

subplot(3,1,1);
alpha = plot(-cos(varalpha)*l1-cos(varbeta)*l2,+sin(varalpha)*l1+sin(varbeta)*l2);
set(alpha,'Color','red','LineWidth',1);
title('motion');
subplot(3,1,2);
beta = plot(t,varalpha,'green',t, varbeta, 'blue',t, vargamma, 'red');
set(beta,'LineWidth',1);
title('angels');
legend('alpha','beta','gamma' )
subplot(3,1,3);
if (l0+l3>l1+l2)
    a = l0+l3;
else
    a = l1+l2;
end
h=plot(0,0,'MarkerSize',30,'Marker','.','LineWidth',2);
range=1.1*(a); axis([-range range -range range]); axis square;
set(gca,'nextplot','replacechildren');
hold on;
g=plot(0,0,'MarkerSize',30,'Marker','.','LineWidth',2);
range=1.1*(a); axis([-range range -range range]); axis square;
set(gca,'nextplot','replacechildren');
for i=1:length(varalpha)-1
       
        if (ishandle(h)==1)
          Ycoord=[0,l1*sin(varalpha(i)),l1*sin(varalpha(i))+l2*sin(varbeta(i))];
            Ycoord3=[0,l3*sin(vargamma(i))];
           Xcoord=[0,l1*cos(varalpha(i)),l1*cos(varalpha(i))+l2*cos(varbeta(i))];
            Xcoord3=[l0,l0+l3*cos(vargamma(i))];
            set(h,'YData',Ycoord,'XData',Xcoord);
            set(g,'YData',Ycoord3,'XData',Xcoord3);
            drawnow;
            F(i) = getframe;
        end
    end
    title('animation1');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2012, 12:27     Titel:
  Antworten mit Zitat      
ich hatte das am Anfang wohl etwas falsch verstanden. Ich denke hier ist es günstigsten die symbolischen Ausdrücke dx1,dx2,dx3 in ein Matlab-Funktionen umzuwandeln (z.B. mit Matlabfunction). Danach kann man die erzeugten Funktionen einfach in der integrator funktion aufrufen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2012, 22:10     Titel:
  Antworten mit Zitat      
Hallo,

ich bekomme eine Fehlermeldung, wenn ich deine Code-Fragmente kopiere und versuche auszuführen.

??? Undefined function or method 'eval' for input arguments of type
'double'.

Error in ==> integrator at 15
dxe1 = eval(dx1);

[...]


Vorschläge:
Wenn du wenig Zeit reinstecken willst:
Profiler laufen lassen und an den angezeigten Stellen arbeiten.

Wenn du das ganze "richtig" machen willst:
- weg mit den globalen Variablen
- weg mit eval
- verschiedene Löser testen

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2012, 08:28     Titel:
  Antworten mit Zitat      
Ich hab nur den Teil build_ode ausgeführt. Als Ergebnis erhält man die symbolischen Ausdrücke dx1, dx2 und dx3. Diese werden in ein string umgewandelt und dann mit eval ausgewertet. Eine Umwandlung in double kann ich eigentlich nirgends entdecken.

Wenn man die (meterlangen) symbolischen Ausdrücke durch Funktionen ersetzt fällt das eval schon mal weg.
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 16:07     Titel:
  Antworten mit Zitat      
Vielen Dank euch beiden!

Ich habe noch ein paar Fragen zum besseren Verständnis:

Mit verschiedenen Loesern meinst du ODE45, 15s usw?

Zum Thema eval und globale Variablen weg und lieber Funktionen benutzen habe ich noch folgendes Problem.

Build ODE baut mir meine Bewegungsgleichung die ja anschliessend integriert werden soll. Da ich aber am Ende die Lösung bei verschiedenen Eingangsparametern (Längen, Massen, Drehmomenten usw) haben moechte, muss meine Bewegungsgleichung nur ein einziges mal hergeleitet werden. Danach möchte ich diese einfach abspeichern und immer wieder benutzen. Geht dies denn ohne globale Variablen? Weil wenn ich die Gleichung via Funktion übergeben mag dann müsste ich die Funktion (hier also build ode) jedes mal ausführen oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2012, 18:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mit verschiedenen Loesern meinst du ODE45, 15s usw?

Genau.

Zu der anderen Frage: hierzu eignen sich anonymous function handles, siehe
http://www.mathworks.de/help/techdoc/math/bsgprpq-5.html

Kurz gefasst: Wenn du eine Funktion
Code:
function dy = f(t, y, params)

an ode45 oder ähnliche übergeben möchtest, kannst du das folgendermaßen machen:
Code:
params = ... % Parameter definieren, z.B. deine Funktionen
... = ode45(@(t,y) f(t,y,params), ...


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2012, 23:33     Titel:
  Antworten mit Zitat      
Guten Abend,

wenn ich diese anonymous function benutze definiere ich über diese ja meine Bewegungsgleichung die mir in Build_ODE berechnet wird und übergebe diese an den Integrator. Wenn ich nun aber meine Eingabewerte, sagen wir mal die Masse, ändere und das Programm nochmal durchlaufen lassen möchte, dann wird ja auch nochmals BUILD_ODE durchlaufen oder?

Nochmals zum Verständnis, falls meine obige Annahme stimmt.
Der Optimalzustand im fertigen Programm sollte sein:
Starte Programm, generiere mir meine Bewegungsgleichung schreibe diese in eine Funktion, Variable was auch immer und berechne daraus meine Bewegung. Ändert man nun was checkt mein Programm ob diese Funktion bzw Variable in der die Bewegungsgleichung schon ist enthalten ist bereits vorhanden ist und benutzt ohne mein BUILD_ODE auszuführen diese Variable für andere Werte.

Sollte ich mit obiger Annahme falsch liegen, dann wäre es kurz nett mir zu sagen woher Matlab weis, dass es bei der Anonymous Function BUILD_ODE nur einmal durchlaufen muss.

Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.07.2012, 10:30     Titel:
  Antworten mit Zitat      
Ich verstehe die Frage nicht richtig. Build_ode sollte dir die Funktion f der Form

Code:
function dy = f(t, y, params)
 


erstellen. Danach kannst du die Parameter params ändern ohne das du build_ode erneut ausführen musst. Wenn du allerdings mehr als nur Parameter ändern willst, musst du build_ode anpassen und natürlich erneut ausführen.

Beispielcode (nicht getestet):

Code:

syms par y t;
dy = par*y;
f = matlabfunction(dy,,'vars',{t,y,par});

p = -0.1;
sol = ode45(@f(t,y) f(t,y,p),[0,10],1);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
AJM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2012, 10:25     Titel:
  Antworten mit Zitat      
Hi,

ich habe mich jetzt länger zu der anonymous function eingelesen und bin dabei auf eine andere Idee gestossen, die meiner Meinung nach sogar besser (vor allem für den weiteren Verlauf) geeignet ist.

Ich speichere meine Variable in einer Datei mittels save und lade diese in den Integrator. Das einzige Problem das ich hier noch habe ist, dass ich ja einen symbolischen Ausdruck speichere und diesen via Format zu ASCI umwandeln kann. Ich vermute nur, dies ist sehr nahe an der von mir genutzten Methode mit eval, richtig?
Gibt es hier eine schöne Möglichkeit mit save und load das ganze sauber und schnell zu lösen, oder komme ich um die Anonymus Funktion nicht rum?

LG und Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2012, 10:40     Titel:
  Antworten mit Zitat      
Hallo,

der Nachteil an save und load ist, dass du wohl wiederholt laden würdest und das Lesen von der Festplatte bekanntlich langsam ist. Da sollte man zumindest mit persistent Variablen arbeiten.

Zitat:
oder komme ich um die Anonymus Funktion nicht rum?

Was genau spricht denn dagegen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.