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 aus anderem Ordner einer Function übergeben

 

TomF
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 22.02.17
Wohnort: Hannover
Version: R2016b
     Beitrag Verfasst am: 22.02.2017, 17:30     Titel: .m - file aus anderem Ordner einer Function übergeben
  Antworten mit Zitat      
Hallo zusammen,

da dies mein erster Beitrag hier im Forum ist, verzeit mir bitte Fehlerhafte Beschreibungen oder ähnliches.

Ich bin momentan dabei, eine function (getPrestrain) zu schreiben, der ich ein bereits existierendes .m-file (member1 vom Typ member) übergeben möchte, welches jedoch in einem anderen Ordner (FlexAnalysis) liegt.

Mein Versuch sah zunächst so aus:

Code:

function [ epsilon_c0, epsilon_s0] = getPrestrain(member)

cd ../
addpath(genpath('./'))
cd FlexAnalysis
 


Wenn ich nun aber die function ausführern möchte:

Code:

>> [ epsilon_c0, epsilon_s0] = getPrestrain(member1)
 


kommt der Fehler:

"Undefined function or variable 'member1'."

Wie kann ich dieses Problem lösen?

Vielen Dank im Voraus!
_________________

Beste Grüße

TomF
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: 22.02.2017, 17:43     Titel:
  Antworten mit Zitat      
Hallo,

mit den gegebenen Informationen finde ich es schwierig, da zu helfen. Insbesondere ist mir der Zweck der Pfadwechsel nicht klar.

Funktionen werden grundsätzlich als Function Handles übergeben, also @member1.
Falls das nicht weiterhilft, bitte genauere Informationen zu member1.m und wie die Variable member in getPrestrain verwendet wird.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 22.02.17
Wohnort: Hannover
Version: R2016b
     Beitrag Verfasst am: 22.02.2017, 17:54     Titel:
  Antworten mit Zitat      
Ok, ich hole mal ein bischen weiter aus ^^

Es geht darum, dass ich eine Nachweisführung mit Matlab durchrechnen lassen möchte, die sich in verschiedene Einzerlnachweise untergliedert.

Hier einmal meine Ordnerstruktur im Anhang als Bild.

Die function member1.m erzeugt im endeffekt nur ein Bauteil mit geometrischen und physikalischen Eigenschaften (siehe Anhang).
Nun habe ich aber meine Bauteile (member1 und member2) in einem anderen Ordner liegen, als die function getPrestrain, die die Dehnung des Bauteils berechnet.

Meine Frage also noch einmal allgemeiner:

Wie kann ich meiner function getPrestrain meine Bauteile übergeben, die im Ornder models liegen?

Vielen Dank für die schnelle Antwort!

ornderstruktur.PNG
 Beschreibung:

Download
 Dateiname:  ornderstruktur.PNG
 Dateigröße:  7.2 KB
 Heruntergeladen:  180 mal
member1.m
 Beschreibung:
Bauteil 1

Download
 Dateiname:  member1.m
 Dateigröße:  2.78 KB
 Heruntergeladen:  205 mal

_________________

Beste Grüße

TomF
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: 22.02.2017, 18:05     Titel:
  Antworten mit Zitat      
Hallo,

gut, das @ ist in dem Fall nicht notwendig, weil du die Funktion direkt aufrufen kannst.

Es sollte reichen, das Verzeichnis mit der Funktion auf den Suchpfad zu legen. Möglichkeiten dazu sind addpath oder pathtool .

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 22.02.17
Wohnort: Hannover
Version: R2016b
     Beitrag Verfasst am: 22.02.2017, 19:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

addpath habe ich ja schon ausprobiert (siehe erster Beitrag). Das Problem ist dabei, dass die Funktion gar nciht soweit läuft. Es geht nur, wenn ich addpath... vor dem ausführen der function in das commandwindow eingebe. Ich hatte nur gehofft, dass es eine Möglichkeit gibt, dies in der function zu integrieren.

Vielen Dank nochmal!
_________________

Beste Grüße

TomF
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: 22.02.2017, 20:24     Titel:
  Antworten mit Zitat      
Hallo,

nein, weil addpath verwendet worden sein muss, bevor die Funktion verwendet werden soll.

Du könntest höchstens den Funktionsnamen als String übergeben und dann in der Funktion z.B. mit str2func ein Function Handle daraus machen:

Code:
function [ epsilon_c0, epsilon_s0] = getPrestrain(member)

cd ../
addpath(genpath('./'))
cd FlexAnalysis

fh = str2func(member);
member = fh();


und der Aufruf dann mit
Code:
getPrestrain('member1')


Das ist aber eher unschön. Ich würde wirklich empfehlen, die Pfadprobleme außerhalb der Funktion zu lösen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 22.02.17
Wohnort: Hannover
Version: R2016b
     Beitrag Verfasst am: 22.02.2017, 20:49     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen dank für deine Hilfe.

Ich werde mir wohl ein am Ende ein Skript schreiben, dass zu Beginn die Ordner added und dannn nacheinander alle functions ausführt.

Besten Dank nochmal
_________________

Beste Grüße

TomF
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: 22.02.2017, 21:05     Titel:
  Antworten mit Zitat      
Hallo,

das ist eine sinnvolle und sehr übliche Lösung.

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.