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

Funktionsaufruf innerhalb eines Functions-File

 

Bianka_F
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2012, 23:23     Titel: Funktionsaufruf innerhalb eines Functions-File
  Antworten mit Zitat      
Hallo Leute,
Ich bin eine absolute Matlab-Anfängerin und verstehe daher leider noch nicht so viel von Matlab. Ich habe gerade folgendes Problem.
Ich habe folgende Hilffunktion als function-File:

Code:

function [ a ] = hilf( fun, x, d, p)

t = 1;
while fun( x + t * d) > p
...
 


Und ich habe noch eine andere Funktion f1 geschrieben, die lediglich einen Wert berechnet ( f= x^3)
So, jetzt will ich aus der Standard Matlab GUI diese Hilfsfunktion aufrufen und dabei dieser Funktion meine andere Funktion f1 übergeben. Wenn ich jetzt folgendes eingabe

Code:

hilf(f1, 2, 0.2, 0.5)
 


dann bekomme ich folgende Fehlermeldung:
"Error using f1 (line 5)
Not enough input arguments."

wenn ich dann input-Argumente für f1 angebe (wobei das eigentlich keinen Sinn macht), bekomme ich auch einen Fehler:
Code:

hilf(f1(5), 2, 0.2, 0.5)
 

-->"Attempted to access fun(2.2); index must be a positive integer or logical."

Und das verstehe ich jetzt nicht wirklich. Warum muss ich denn überhaupt f1 einen Input geben beim Aufruf von hilf und wieso muss die Zahl ein Integer sein, weil wenn ich einfach f1(2.2) eingebe, dann funktioniert das ja auch.

Also was ich machen will, ist einfach der Hilffunktion hilf die Funktion f1 übergeben, sodass hilf mit f1 rechnen kann.
Kann mir jemand weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2012, 15:27     Titel:
  Antworten mit Zitat      
Hallo Bianka,

Lies mal dieses tolle Tutorial
http://www.gomatlab.de/tutorial-kei.....function-handle-t545.html
über function handles.
Das dürfte alle Deine Fragen beantworten.
Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
Bianka_F
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2012, 00:35     Titel:
  Antworten mit Zitat      
Hallo,
Ich habe das Tutorial durchgelesen, jedoch weiß ich leider immer noch nicht was ich machen muss, um mein Problem zu lösen. Ich werde es nochmal ganz kurz schildern: Es geht darum, dass ich in einem function-File eine andere Funktion aufrufe. Zum Beispiel soll die Funktions so aussehen (sinnloses Beispiel)

Code:

function [ d ] = hilf( fun, x )

d= fun(x)

 


Und jetzt kommt genau mein Problem ins Spiel. Ich will, dass fun eine Variable Funktion ist. Ich will Matlab sagen, dass fun keine Konstante wie x ist, sondern eine Funktion. Und das bekomme ich leider nicht hin, obwohl ich schon einiges probiert habe
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: 26.05.2012, 09:45     Titel:
  Antworten mit Zitat      
Hallo,

hast du das schon probiert?

Code:
hilf(@f1, 2, 0.2, 0.5)


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

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2012, 11:12     Titel:
  Antworten mit Zitat      
Danke Harald fpr deine Antwort,
Ich habe noch eine Frage zu function-Files. Wie sage ich in einem Function-File einer Funktion, dass sie einen mehrkomponenten Vektor als Argument hat. Zum Beispiel folgende Funktion:
Code:

function [ Ergebnis ] = fun (x)

 

wobei x ein n-dimensionaler Vektor ist und n variabel ist d.h. die Funktion soll je nach Aufruf mit einem 1, 2 oder 3 dimensinalen Vektor arbeiten
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: 27.05.2012, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

in MATLAB wird nicht unterschieden, ob eine Variable vektorwertig ist oder nicht, oder gar eine Matrix.
Das beste wird sein, innerhalb der Funktion mit SIZE, LENGTH oder NUMEL die Dimensionen des Arguments abzufragen.

Grüße,
Harald
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.