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

Function Handle

 

DerBesteMensch
Forum-Anfänger

Forum-Anfänger



Beiträge: 15
Anmeldedatum: 03.07.11
Wohnort: Lummerland
Version: ---
     Beitrag Verfasst am: 15.12.2012, 15:59     Titel: Function Handle
  Antworten mit Zitat      
Hallo,

Ich habe die folgende Funktion in einem m-File gespeichert:

Code:

function df = dF(y,epsilon)
N = length(y);
df = zeros(N);
for j = 1:N
    df(:,j) = 1/epsilon*(F(y+epsilon*(1:N==j)') - F(y));
end
 


Wobei F eine weitere Funktion ist.

Gibt es eine Möglichkeit statt für die Funktion dF ein eigenes m-File anlegen zu müssen, diese auch per Function Handle einzubinden, also in der Art

Code:

dF = @(y,epsilon)(...);
 


Ich weiß leider nicht, wie ich die benötigte for-Schleife in die obige Darstellung einbauen soll. Gibt es vllt einen geschickten Weg die Schleife zu umgehen?
Private Nachricht senden Benutzer-Profile anzeigen


punkNgrind
Forum-Century

Forum-Century


Beiträge: 136
Anmeldedatum: 10.03.11
Wohnort: Hamburg
Version: R2014b
     Beitrag Verfasst am: 15.12.2012, 18:58     Titel:
  Antworten mit Zitat      
Irgendwie verstehe ich dein konkretes Problem nicht.
Willst du so etwas ähnliches wie eine Nested-Function erstellen?
http://www.mathworks.de/de/help/mat.....rog/nested-functions.html

P.S.: Matlab ist nicht BM!
Private Nachricht senden Benutzer-Profile anzeigen
 
DerBesteMensch
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 15
Anmeldedatum: 03.07.11
Wohnort: Lummerland
Version: ---
     Beitrag Verfasst am: 16.12.2012, 10:26     Titel:
  Antworten mit Zitat      
punkNgrind hat Folgendes geschrieben:
Willst du so etwas ähnliches wie eine Nested-Function erstellen?


Nein, nicht wirklich. Dazu muss die nested function ja innerhalb einer anderen Funktion liegen.

Wenn ich mein Rahmenprogramm aber nur als Skript und nicht als Funktion anlegen will, geht das ja nicht.

Ich dachte eher an folgendes (Beispiel):

In der Datei func.m ist folgende Funktion gespeichert:

Code:
function x = func(a,b)
x = a - b;
end


Innerhalb meines Hauptprogramms prog.m wird die Funktion func benutzt.
Statt func in ein extra m-File zu schreiben, möchte ich die Funktion direkt im Hauptprogramm definieren, da sie nur dort und nicht von eventuellen anderen Progrmamen benötigt wird.

Dies tue ich mit

func = @(a,b)(a - b);

Wie kann ich das nun für meine ursprüngliche Funktion (erster Post) umsetzen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.12.2012, 01:20     Titel: Re: Function Handle
  Antworten mit Zitat      
Hallo DerBesteMensch,

Du kannst diese Funktion doch einfach in das M-File der Hauptfunktion hineinkopieren. Darum verstehe ich auch noch nicht, wo das problem liegt.

Code:
function MainFunction
...
y = rand(1, 10);
epsilon = rand(1, 10);
df = dF(y, epsilon);
disp(df);
end

function df = dF(y,epsilon)
N = length(y);
df = zeros(N);
for j = 1:N
    df(:,j) = 1/epsilon*(F(y+epsilon*(1:N==j)') - F(y));
end

Gruß, Jan
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.