Das funktioniert prima. Doch jetzt möchte ich für mehr Flexibilität die DGL, also gewissermaßen dy(2), vom Benutzer über einen String eingeben lassen, für den ich dann str2func aufrufe. Wie macht man so etwas?
du brauchst ein editierbares Textfeld, und dann kannst du dem Beispiel "Convert Character Vector to Handle to Anonymous Function" aus der Doku von str2func folgen. Wenn dann konkrete Fragen entstehen, gerne Bescheid geben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
So, ich habe das nochmal etwas anders geschrieben, damit mein Problem klarer wird und das vorgeschlagene Textfeld 'Plotauswahl' zur Eingabe des Funktionsterms eingebaut.
Code:
function dy=DGL(t,y)
dy=zeros(2,1);
dy1=y(2);
%Im Textfeld Plotauswahl steht -1e4*f-10*fs
%Dabei steht fs für f'
%Hier müsste jetzt der Zugriff auf das Textfeld erfolgen, etwa so
%DGh=str2func(strcat('@(x,f,fs)',get(handles.Plotauswahl,'String'));
%Problem 1: handles ist hier nicht definiert!!
%Problem 2: Wie baut man DGh in das folgende dy2 ein??
dy2=-1e4*y(1)-10*y(2);
dy=[dy1;dy2];
Mit
strrep
kannst du zuerst fs und dann f wie gewünscht ersetzen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Harald, trotz deiner Tipps (Dank dafür) bekomme ich es immer noch nicht hin, weil ich die Handles nicht einbeziehen kann. Das mit dem Ersetzen ist dabei für mich das kleinste Problem.
Mein momentaner Stand:
Code:
function DGL_handle=str_func(handles)
%auslesen der DGL aus dem Textfeld
DGL=get_act_DGL(handles); % (funktioniert)
DGL_str=concat('@(x,f,fs)',DGL);
DGL_handle=str2func(DGL_str);
function dy=DGL(t,y)
dy=zeros(2,1);
dy1=y(2);
%dy2='-1e4*f-1*fs' ????? dy2=..
dy=[dy1;dy2];
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.