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 und mehrere Funktionen auswählen

 

texticus
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 27.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2012, 22:30     Titel: Funktion und mehrere Funktionen auswählen
  Antworten mit Zitat      
Hallo,

Ich habe ein Hauptfunktion und in dieser gibt es eine Variable, die auf mehrere Arten berechnet werden kann.
Dazu habe ich dann drei Funktionen. Jetzt möchte ich aber die Funktion für die Variable nicht einzeln aufrufen , sondern diese in der unten gezeigten Funktion auswählen.
Gibt es dafür eine elegante Möglichkeit?

Hier noch die Funktion:

Code:
function [carreau]= carreau(a,b,c,aT,gamma)


% a =Carreau - Koeffizient A [Pa*s]
% b =Carreau – Koeffizient B [s]
% c =Carreau – Koeffizient C
% aT =Temperaturverschiebungsfaktor
% gamma =Schergeschwindigkeit [s^-1]

carreau=(aT.*a)/((1+aT.*b.*gamma)^c);

 


Das aT kann auf 3 verschiedene Arten berechnet werden und deswegen habe ich jeweils eine Funktion für diese Berechnung auch als m.File.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2012, 23:07     Titel:
  Antworten mit Zitat      
Hallo,

dann übergib doch statt aT ein Function Handle, das auf die zu verwendende Funktion verweist?
Falls das nicht hilft: wie soll denn ausgewählt werden, welche Funktion zu verwenden ist?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 27.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2012, 23:17     Titel:
  Antworten mit Zitat      
Danke für die Antwort. Ich lese mich gerade erst ein was diese Function Handles angeht. Denke ,dass es eine gute Möglichkeit ist sobald ich genau weiß wie ich dieses Function Handle überhaupt richtig verwende. Ich müsste dieses aT dann einfach als String übergeben und dann irgendwie auf diese drei aT m.Files verweisen
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.03.2012, 09:06     Titel:
  Antworten mit Zitat      
kleines beispiel:
Code:
function [ output_args ] = test(f,x)
plot(x,f(x));
end
 

aufruf dann zb mit
Code:
test(@sin,[1:10])
Private Nachricht senden Benutzer-Profile anzeigen
 
texticus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 27.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2012, 10:02     Titel:
  Antworten mit Zitat      
Danke.

Ich habe jetzt etliche Beiträge zu Function Handles durchgelesen. Leider komm ich einfach nicht genau auf die Logik.

Ich habe 3 M-Files :arrhenius.m , wlf.m, carpow.m die jeweils das aT ausrechnen.

Wie kann ich denn diese Files als String in die obige Funktion übergeben? Wo schreibe ich denn das @ hin?
Um die obige Funktion dann auszurechnen müsste ich ja dann mit eval arbeiten,oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.03.2012, 11:45     Titel:
  Antworten mit Zitat      
Code:
function [carreau]= carreau(a,b,c,aT,gamma)
carreau=(aT.*a)/((1+aT.*b.*gamma)^c);
end

so für das at willst du also jetzt eine funktion benutzen. wofon hängt das ganze denn ab? auch von a,b,c,gamma?

dann einfach
Code:
function [carreau]= carreau(a,b,c,aT,gamma)
carreau=(aT(a,b,c).*a)/((1+aT.*b.*gamma)^c);
end
und die funktion dann halt mit
Code:
carreau(a,v,c,@carpow,gamma)
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.