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

Functions aus einem anderen Skript importieren

 

blackputin95
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 27.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 21:24     Titel: Functions aus einem anderen Skript importieren
  Antworten mit Zitat      
Hallo Leute,

Wie kann ich eine function aus einem anderen skript herholen?
Mir geht es darum, dass die function nur eine Formel enthält (z.B a+365=b) und in ein anderes skript importiert wird, wo die Variable a definiert ist und somit b berechnet werden kann. Die Formel ist eigentlich komplexer, wurde jedoch vereinfacht, um das problem besser darzustellen.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.01.2018, 21:37     Titel:
  Antworten mit Zitat      
Hallo,

neben der Formel enthält eine Funktion immer auch noch eine Deklarationszeile. Diese ist wichtig, damit man die Anzahl der Ein- und Ausgabeargumente weiß.

Dann schreibst du im Skript beispielsweise
Code:
bneu = funName(aneu)


Dabei ist aneu entweder eine bestehende Variable oder kann auch eine Zahl oder ein auszuwertender Ausdruck sein.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 27.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 22:08     Titel:
  Antworten mit Zitat      
Hallo,

Danke für die schnelle Antwort. Ich habe noch ein paar fragen. Wie würde die Deklarationszeile bei meinem Beispiel aussehen? Damit hätte ich was zum Orientieren.
Desweiteren frage ich mich warum die Variablen "aneu" und "bneu " heißen, obwohl sie in meinem Beispiel a und b heißen? Mit funName meinst du wohl den Funktionsnamen, oder?

Die letzte Frage wäre, ob dein Code auch auch für Unterfunktionen funktioniert, zum Beispiel wenn ich mehrere Funktionen untereinander habe und diese einzeln importieren möchte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.01.2018, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie würde die Deklarationszeile bei meinem Beispiel aussehen?

Ich dachte, du hast die Funktion? Dann schau dir doch die erste Zeile an? Wenn ich raten müsste:
Code:
function b = funName(a)


Zitat:
Desweiteren frage ich mich warum die Variablen "aneu" und "bneu " heißen, obwohl sie in meinem Beispiel a und b heißen?

Um zu verdeutlichen, dass sie im Skript anders heißen können.

Zitat:
Mit funName meinst du wohl den Funktionsnamen, oder?

Genau.

Zitat:
Die letzte Frage wäre, ob dein Code auch auch für Unterfunktionen funktioniert, zum Beispiel wenn ich mehrere Funktionen untereinander habe und diese einzeln importieren möchte.

Ja. Zu beachten ist, dass Unterfunktionen nur innerhalb der Datei aufgerufen werden können.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 27.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2018, 22:33     Titel:
  Antworten mit Zitat      
Hi,

Vielen Dank erstmal. Wie kann ich erreichen, dass auch Unterfunktionen in andere skripte übertragen werden können bzw, gibt es Alternativen zu Unterfunktionen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.01.2018, 22:37     Titel:
  Antworten mit Zitat      
Hallo,

es gibt theoretisch eine Möglichkeit, das zu erzwingen. Das würde ich aber nicht empfehlen.
Stattdessen jede Funktion, die von außen aufrufbar sein soll, in eine eigene Datei. Wenn es zu viele Dateien in einem Verzeichnis werden, dann die Funktionen in ein anderes Verzeichnis schieben und dieses mit addpath oder pathtool zum MATLAB-Suchpfad hinzufügen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sir Boris
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2018, 17:31     Titel:
  Antworten mit Zitat      
Hallo nochmal,

Ich bin bei meiner Programmierung auf ein Problem gestoßen:
So sieht meine "Beanspruchung.m" aus

Code:
function[S_max_zd,S_max_b,T_max_t,T_max_s]= Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)


A=  pi*(d^2)/4
S_max_zd= ((F1*K_A)+(F2*K_A))/A


Wb=(pi/32)*d^3
S_max_b= (((Mbm*K_A)+(Mba*K_A))*10^3)/Wb


Wt=(pi/16)*d^3  
T_max_t= (((Tm*K_A)+(Ta*K_A))*10^3)/Wt


T_max_s= ((Fs1*K_A)+(Fs2*K_A))/A

end


So weit so gut.
In meinem Skript "Beanspruchungstest.m" sind die Variablen definiert und es S_max_zd, S_max_b, T_max_t und T_max_s berechnet werden.
Es sieht folgendermaßen aus.

Code:
d=30;
F1=500;
F2=600;
K_A=1.2;
Mbm=700;
Mba=800;
Tm=900;
Ta=1000;
Fs1=1100;
Fs2=1200;

S_max_zd=Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)
S_max_b=Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)
T_max_t=Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)
T_max_s=Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)


Die Problematik ist, dass für alle 4 dasselbe Ergebnis herauskommt, was ja falsch ist. S_max_zd hat das richtige Ergebnis, für die anderen ist es falsch. Ich habe vieles versucht, jedoch klappt es nicht. Übersehe ich etwas? Wäre gut, wenn du mir helfen könntest.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2018, 18:01     Titel:
  Antworten mit Zitat      
Hallo,

du musst die Funktion einmal und mit allen Argumenten aufrufen:
Code:
[S_max_zd,S_max_b,T_max_t,T_max_s]= Beanspruchung(d,F1,F2,K_A,Mbm,Mba,Tm,Ta,Fs1,Fs2)


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 - 2024 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.