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

Paramter ersetzen zwischen Funktionen

 

Matlabrador
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.01.20
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.01.2020, 11:57     Titel: Paramter ersetzen zwischen Funktionen
  Antworten mit Zitat      
Hallo, ich habe eine kurze Frage:

ich habe zwei Funktionen wovon mir die erste Funktion

"klausureinsa" den Flächeinhalt (Rechteck) mit Input "Hoehe" und "Breite" berechnet.

die zweite Funktion

"klausureinsb" den Flächeinhalt (Kreis) mit Input "Radius" berechnet.

und nun soll die dritte Funktion

"klausureinsc" die Fläche berechnen, die übrig bleibt wenn ich den Kreis aus einem Quadrat abziehe, anhand dem Input der "Kantenlaenge"

Ich möchte quasi in "klausureinsc" die Paramter "Hoehe" & "Breite"mit "Kantenlaenge", und "Radius" mit "Kantenlaenge/2" ersetzten (ergibt dann ja einen Kreis der genau ins Quadrat passt. Die übrigen Ecken sind der zuerrechnende Flächeninhalt.

Sozusagen so: https://enwe.fcg-duesseldorf.de/pi1.png

So sehen meine Formeln bis jetzt aus:

Zitat:
function Flaecheninhalt = klausureinsa
Hoehe = input ('Hoehe');
Breite = input ('Breite');
Inhalt = (Hoehe*Breite)
end


Zitat:
function Flaecheninhalt = klausureinsb
Radius = input ('Radius');
Inhalt = ((Radius^2)*pi)
end


Zitat:
function Flaecheninhalt = klausureinsc
Kantenlaenge = input ('Kantenlaenge');
klausureinsa(Hoehe) = (Kantenlaenge);
klausureinsa(Breite) = (Kantenlaenge);
klausureinsb(Radius) = (Kantenlaenge/2);
Inhalt = (klausureinsa-klausureinsb)
end


nur klappt das Ersetzen der Paramter nicht! "Hoehe" usw wird nicht gefunden - wo liegt der Fehler?

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.01.2020, 13:30     Titel:
  Antworten mit Zitat      
Hallo,

jede Funktion hat ihren eigenen Workspace. Wenn Variablen in mehreren Funktionen verwendet werden sollen, müssen sie als Ein- oder Ausgabeargumente übergeben werden.

Ich habe dir ja in deiner letzten Frage einen Link geschickt, wie man Funktionen erstellen sollte: nicht mit input-Befehlen, sondern indem man die Parameter nach dem Funktionsnamen als Eingabeargumente angibt, z.B.
Code:
function Flaecheninhalt = klausureinsa(Hoehe, Breite)


Bitte auch die orangen Warnungen von MATLAB beachten. Daraus kannst du z.B. schließen, dass Inhalt und Flaecheninhalt gleich heißen sollten.

Die Aufrufe in der dritten Funktion müssen dann noch entsprechend angepasst werden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabrador
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.01.20
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 07.01.2020, 21:18     Titel:
  Antworten mit Zitat      
Hallo, vielen Dank für deine Antwort.

Zur Info, wir verwenden Matlab an der Uni, für daheim nutzen wir "Octawave", welches Matlab sehr ähnelt.

Nun habe ich die Scripte wie folgt abgeändert, wobei über "Run" nun der Fehler

Code:
error: 'Hoehe' undefined near line 2 column 11
error: called from
    klausureinsa at line 2 column 8


auftritt.

klausureinsa

Code:
function Inhalt = klausureinsa(Hoehe, Breite)
Inhalt = (Hoehe*Breite)
end


klausureinsb

Code:
function Inhalt = klausureinsb(Radius)
Inhalt = ((Radius^2)*pi)
end


klausureinsc

Code:
function Inhalt = klausureinsc (Kantenlaenge)
klausureinsa(Hoehe) = (Kantenlaenge);
klausureinsa(Breite) = (Kantenlaenge);
klausureinsb(Radius) = (Kantenlaenge/2);
Inhalt = (klausureinsa-klausureinsb)
end


Wie kann ich die Aufgabe jetzt lösen?Smile

Vielen Dank und viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.01.2020, 23:02     Titel:
  Antworten mit Zitat      
Hallo,

run macht bei Funktionen wenig Sinn, weil du ja eben die Eingabeparameter vorgeben musst, z.B.
Code:
Inhalt = klausureinsa(3, 4)


Die Aufrufe in klausureinsc musst du noch entsprechend anpassen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.