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

Variablen aus Funktionen

 

zyx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 07:38     Titel: Variablen aus Funktionen
  Antworten mit Zitat      
Hallo Leute!
Hier die Aufgabenstellung zu meinem Problem:

Schreiben Sie ein matlab-Skript sregpol, das mit mehreren Aufrufen von regpol nur folgende Variablen berechnet:

Polyeder Groesse Variable
Oktaeder Volumen Volumen_o
Dodekaeder Volumen Volumen_d
...

meine regpol-function:

Code:
function [V,F,R,r] = regpol(typ,a)
   switch lower(typ(1))  
   case 'w'
    V = a.^3;
    F = 6.*a.^2;
    r = (a./2);
    R = (a./2)*sqrt(3);
    case 't'
        V = (a.^3./12).*sqrt(2);
        F = a.^2 * sqrt(3);
        r = (a./12).*sqrt(6);
        R = (a./4).*sqrt(6);
    case 'o'
         V = (a.^3./3).*sqrt(2);
         F = 2.*a.^2.*sqrt(3);
         r = (a./6).*sqrt(6);
         R = (a./2).*sqrt(2);
    case 'd'
         V = a.^3./4.*(15+7*sqrt(5));
         F = 3.*a.^2.*sqrt(5*(5+2*sqrt(5)));
         r = a./4.*sqrt((50+22*sqrt(5))/5);
         R = a./4.*(1+sqrt(5))*sqrt(3);
        case 'i'
         V = 5*a.^3./12.*(3+sqrt(5));
         F = 5.*a.^2.*sqrt(3);
         r = a./2.*sqrt((7+3*sqrt(5))/6);
         R = a./4.*sqrt(2*(5+sqrt(5)));
    otherwise
        error('Unbekannter Typ')
    end
end
 

Leider habe ich es bis jetzt nicht geschafft eine function zu definieren, die sich auf die obere bezieht.
Vielen Dank im Voraus für eure Hilfe! Smile
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: 10.04.2018, 08:55     Titel:
  Antworten mit Zitat      
Hallo,

was hast du versucht, und welche Probleme sind dabei aufgetreten?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 08:59     Titel:
  Antworten mit Zitat      
Zitat:
Leider habe ich es bis jetzt nicht geschafft eine function zu definieren, die sich auf die obere bezieht


Mir ist 100 Prozentig ganz klar was du meinst, ich vermute du möchtest die angegebene Funktion aufrufen? Dazu musst du das oben angegebenen Codesegment als regpol.m abspeichern und die Funktion anschließend aus einem separaten Matlabscript mit

Code:
[V,F,R,r] = regpol(typ,a)

aufrufen.
In der Matlabdokumentation werden Funktionen ausführlich mit Beispielen erklärt: https://de.mathworks.com/help/matlab/ref/function.html
Private Nachricht senden Benutzer-Profile anzeigen
 
zyx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 09:17     Titel:
  Antworten mit Zitat      
also ich glaube, danach für die jeweiligen Polyeder eine eigene function schreiben zu müssen. Innerhalb dieser function soll ich dann die jeweiligen Variablen definieren, welche sich dann auf regpol beziehen.
für jeden Polyeder soll eine eigene function geschrieben werden.

Meine Idee war es dies mit @ zu bewerkstelligen, allerdings glaube ich dass das ein völlig falscher Ansatz ist...
Private Nachricht senden Benutzer-Profile anzeigen
 
T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 09:29     Titel:
  Antworten mit Zitat      
Ich glaube du denkst zu kompliziert Very Happy
Die Gleichungen für die gesuchten Größen sind in regpol bereits alle enthalten. Du musst dir nur überlegen wie du die regpol-Funktion dazu überredest dir genau die Größen auszuspucken die du haben möchtest. Schau dir dazu die Funktion genau an und überleg dir welche Argumente du an sie übergeben musst. @ brauchst du dafür nicht, normale Funktionsaufrufe mit den richtigen Argumenten reichen aus!
Private Nachricht senden Benutzer-Profile anzeigen
 
zyx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 09:34     Titel:
  Antworten mit Zitat      
Alles klar, das habe ich mir schon gedacht xD. Vielen Dank für eure schnelle Hilfe!! Ich werde es mal versuchen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
zyx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 10:14     Titel:
  Antworten mit Zitat      
Also ich habe bis jetzt herausgefunden, dass

Kante = [1:3];
[V,~,~,~] = regpol('o',Kante);
Volumen_o = regpol('o',Kante);

funktioniert.

Allerdings habe ich nun ein Problem, wenn ich z.B.:

[V,F,R,~] = regpol('o',Kante);

haben 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: 10.04.2018, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Allerdings habe ich nun ein Problem, wenn ich z.B.:

[V,F,R,~] = regpol('o',Kante);

haben möchte...?

Welches Problem?

Wenn du das vierte Rückgabeargument nicht haben möchtest, kannst du es auch einfach weglassen.
Code:
[V,F,R] = regpol('o',Kante);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 10:21     Titel:
  Antworten mit Zitat      
Welches Problem hast du genau? Kannst du die Fehlermeldung posten? Bei mir läuft die Zeile ohne Probleme.

Edit: War Harald doch wieder ein paar Sekunden schneller Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
zyx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 10:25     Titel:
  Antworten mit Zitat      
Alles klar. Also:

[V,F] = regpol('d',Kante);
Volumen_d = regpol('d',Kante);
Flaeche_d = ?
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: 10.04.2018, 10:30     Titel:
  Antworten mit Zitat      
Hallo,

ich versuche mich mal im Gedankenlesen.
Du hast herausgefunden, wie du beide Rückgabeargumente bekommst oder nur das erste. Jetzt möchtest du wissen, wie du nur das zweite Rückgabeargument bekommst?

Code:
[~, Flaeche_d] = regpol('d',Kante);


Insbesondere falls ich die Gedanken falsch gelesen habe, teile sie uns doch bitte generell mit...

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 10:42     Titel:
  Antworten mit Zitat      
Ja tut mir leid! Das habe ich gemeint.

[V,F] = regpol('d',Kante);
Volumen_d = V;
Flaeche_d = F;

funktioniert Smile

Vielen Dank für die Hilfe!!!!!
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: 10.04.2018, 10:50     Titel:
  Antworten mit Zitat      
Hallo,

du kannst die Variablen auch gleich so nennen:
Code:
[Volumen_d,Flaeche_d] = regpol('d',Kante);


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 10.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2018, 10:55     Titel:
  Antworten mit Zitat      
Ja stimmt das ist besser.
Vielen Dank!! Very Happy
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.