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

Funktion aus Funktionenschar definieren mit festem Parameter

 

matlabritter
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2012, 00:06     Titel: Funktion aus Funktionenschar definieren mit festem Parameter
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgende Frage: Ich habe eine Funktionenschar definiert mit dem Scharparameter a:

Code:

function [f] = funktion1(a,x)
f = a*x^2;
end
 


Nun möchte ich aus der Funktionenschar eine Funktion mit festem Parameter a definieren, z.B. g(x) soll f(a,x) mit a=2 entsprechen, d.h. g(x) = f(a=2,x). Wie muss ich g(x) in Abhängigkeit von f(a,x) angeben?

Meine Versuche, dies in Matlab umzusetzen, waren erfolglos :( Ich möchte NICHT die symbolic math toolbox verwenden.

Wahrscheinlich ist es sehr einfach und ich sehe den Wald vor lauter Bäumen nicht... Vielen Dank für jede Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


matlabritter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2012, 09:51     Titel:
  Antworten mit Zitat      
Weiß keiner Rat?

Habe verschiedene Ideen ausprobiert, d.h. erst eine Funktion 'funktion1' definiert:

Code:

function [f] = funktion1(a,x)
f = a*x^2;
end
 


Und anschließend würde ich gerne in einem Skriptfile
Code:

a_konkret = 2;
fhandle = @funktion1
g(x) = fhandle(a = a_konkret, x);
 


ausführen. g(x) soll dann eine Funktion sein, die z.B. mittels feval(g,4) aufrufbar ist. Die letzte Zeile in obigem Code funktioniert nicht, habe auch schon mit inline() rumgespielt, aber ebenso wenig erreicht.

Hat niemand eine Idee, wie ich das umsetzen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 31.05.2012, 12:37     Titel:
  Antworten mit Zitat      
Hallo,

Code:

clc
clear all

function y= funktion1(a,x)
   y = a*x.^2;
end

% Parameter a setzen auf 2 und Funktion definieren
g2=@(x) funktion1(2,x);

% Testaufruf mit x=3
g(3)

>> ans=18
 


Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabritter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2012, 13:00     Titel:
  Antworten mit Zitat      
Hallo MaFam,

vielen Dank, danach hatte ich gesucht!
Ich hätte trotzdem noch eine anknüpfende Frage, und zwar:

Angenommen meine Funktion f hat 2 Outputwerte, kann ich bei Funktion g angeben, für welchen Outputwert diese definiert sein soll?

Bsp.:
Code:


function [out1, out2] = f(a,x)
   out1 = a*x.^2;
   out2 = 2*a*x;
end

g=@(x) f(5,x)(1);  % g soll sein: 5*x.^2
h=@(x) f(5,x)(2);  % h soll sein: 2*5*x

 

g(x) soll also als Funktion den Wert out1 mit a=5 an der Stelle x liefern.
h(x) soll als Funktion den Wert out2 mit a=5 an der Stelle x liefern.

Ist dies möglich bzw. kann ich irgendwie definieren, welcher output (bei mehreren möglichen outputs) ausgegeben werden soll? Ich weiß, dass wert=f() nur den ersten outputwert und [wert1,wert2] = f() beide outputwerte liefert, aber wie z.B. kann ich nur den zweiten abrufen? Insbesondere, wenn daraus eine neue Funktion definiert werden soll?

Vielen Dank!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 31.05.2012, 13:16     Titel:
  Antworten mit Zitat      
Code:

function [out1, out2] = funktion1(a,x)
   out1 = a*x.^2;
   out2 = 2*a*x;
end

g2=@(x) funktion1(2,x);

[g2x,g2y]=g2(3)

% oder
[g2x,~]=g2(3)

% oder
[~,g2y]=g2(3)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabritter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2012, 13:36     Titel:
  Antworten mit Zitat      
Danke für Deine schnelle Antwort!

Wenn ich es so mache, habe ich aber jeweils nur die Ausgabewerte für out1, out2, nicht aber die Funktion. Ich benötige die Funktionen, da ich die Funktionen g(x) und h(x) (aus letztem Beitrag) an eine neue Funktion weitergeben möchte und erst dann an einer bestimmten Stelle x ausgewertet werden soll.

D.h. anstelle von

Code:
[~,g2y]=g2(3)


benötige ich etwas in Richtung


Code:
g2y=@(x) funktion1(2,x)[2]



wobei das '[2]' anzeigen soll, dass als Funktion der zweite Ausgabewert in Abhängigkeit von x und für a=2 ausgegeben werden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 31.05.2012, 15:12     Titel:
  Antworten mit Zitat      
Gut, dann so:

Code:

function out = funktion1(a,x,choice)
   if(strcmp(choice,'out1'))
      out = a*x.^2;
   elseif(strcmp(choice,'out2'))  
      out = 2*a*x;
   end
end

g1=@(x) funktion1(2,x,'out1');
g2=@(x) funktion1(2,x,'out2');

% Testausgabe
g1(3)
>> ans=18
g2(3)
>> ans=12
 
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabritter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2012, 11:53     Titel:
  Antworten mit Zitat      
Dein letzter Beitrag hat mich zum Ziel geführt =)
Vielen Dank!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.