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

m-file einbinden in anderes m-file

 

greta

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2011, 11:43     Titel: m-file einbinden in anderes m-file
  Antworten mit Zitat      
hallo,

ich habe mir ein m-fiel geschrieben, das mir eine funktion mit bestimmten anfangswerten approximiert. das funktioniert auch alles.
jetzt wollte ich die anfangswerte variieren und die ergebnisse vergleichen. damit ich nicht immer in meinem approximations-file sachen ändern muss, wollte ich mir ein extra file schreiben, indem die anfangswerte stehen und dieses file dann an mein approximations-file übergeben. allerdings funktioniert das nicht. wie muss ich denn mein file aufrufen, damit es die werte auch erkennt?

ich habe mir in dem extra file einen vektor definiert in dem die Werte stehen, die übergeben werden sollen. wenn ich nun zu beginn des approx. files einfach den namen des extra files schreibe, dann spuckt er mir zwar den vektor aus, verwendet aber die werte nicht...

ich komm hier einfach nicht weiter. vielleicht kann mir ja jemand helfen?

gruß greta


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.10.2011, 11:48     Titel:
  Antworten mit Zitat      
Hallo,

bei Funktionen ist das entscheidende, dass die Ein- und Ausgabeparameter übergeben werden müssen. In der Hilfe findest du dazu Informationen, wenn du im Contents Tab auf MATLAB --> Getting Started --> Scripts and Functions gehst.

Falls dir das nicht weiterhilft, bitte die relevanten Code-Abschnitte posten.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2011, 12:07     Titel:
  Antworten mit Zitat      
hallo,

so ganz hat es mir leider noch nicht geholfen...
hier ist der teil meines approximations-file, wo ich den vektor mit den werten gerne hätte:
Code:

function f = y_init(x, u)
        f = a0.*x.^4 + c0.*x.^2 + b0.*x + f0;
    end
 

das ist meine funktion, die ich approximieren will. die werte für a0, ..., f0 habe ich von hier:
Code:

function u = uebergabe

a0 = 3;
b0 = -1;
c0 = 5;
f0 = 3;

u = [a0, b0, c0, f0];

return;
 


in meinem approximations file habe ich ganz zu beginn einfach
Code:
uebergabe
 

eingegeben.
wahrscheinlich stehe ich nur vollkommen auf dem schlauch...
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 18.10.2011, 12:21     Titel:
  Antworten mit Zitat      
Die Variablen a0, b0, c0 und f0 sind in der Funktion y_init unbekannt, weil du nur die struct-Variable "u" übergibst. Probier es mal mit u.a0, u.b0, u.c0 und u.f0 und rufe dann die Funktion mit

Code:
u = uebergabe;
f = y_init(x, u);


auf...
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 18.10.2011, 12:24     Titel:
  Antworten mit Zitat      
Wenn du die Koeffizienten in einem Vektor übergeben willst, wird das so nicht gehen, da dann die Variablennamen a0 etc. nicht bekannt sind.

Code:

function f = y_init(x, u)
 
f = u(1).*x.^4 + u(3).*x.^2 + u(2).*x + u(4);

% oder als Alternative ohne Vektor so...
function f = y_init(x, a0, b0, c0, f0)
f = a0.*x.^4 + c0.*x.^2 + b0.*x + f0;  
 


Den anderen File mit den Parametern musst du nicht als function definieren. Dort rufst du einfach deine y_init Funktion auf.

Code:
b0 = -1;
c0 = 5;
f0 = 3;

u = [a0, b0, c0, f0];
x = ....
% Funktionsaufruf
f = y_init(x, u); % x und u werden übergeben

% bzw. falls du Variante 2 für die Übergabe wählst:

f = y_init(x, a0, b0, c0, f0);

 
Private Nachricht senden Benutzer-Profile anzeigen
 
greta

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 13:07     Titel:
  Antworten mit Zitat      
super, vielen dank! jetzt klappt es endlich!

liebe grüße greta
 
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.