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

Haupt sub funktion

 

munto
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 16:48     Titel: Haupt sub funktion
  Antworten mit Zitat      
Hi
ich habe ein Problem
ich mochte in einem skript mehre funktionen ausfüühren.
da habe ich gelsen, das ein fach geht das man einfach meher funktionen untereinander packt.
so wie function A
...

function b
....

möchte diese Funktion art verschateln
aber ,wenn ich dann die function aufrufen, möchte, das mir matlab, das an
Unrecognized function or variable 'A'.

könnte mir jemand sagen, worin der fehler liegt
oder muss ich auch noch extra eine functions m datei erstellen?
könte mir dazu jemand etwas sagen?
Private Nachricht senden Benutzer-Profile anzeigen


ueg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 15.08.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2021, 18:37     Titel:
  Antworten mit Zitat      
Hallo Smile
Am einfachsten wäre es, wenn du deinen Code hier reinstellst.
Man kann auf jeden Fall Funktionen in einer Funktion aufrufen. Du wirst da irgend etwas falsch programmiert haben. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
munto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2021, 14:05     Titel:
  Antworten mit Zitat      
Hi okay,
dann stelle ich es mal ganz rein,

Das program soll aus skript und funkionen sein, aber alles in einem skript

wenn ich da skript ausführen lasse. wird mir die grafik dargetellt.
auch die var, werden mir im workspace angezeigt. die ich defineirt habe, sie werden sogar berechnet.
aber am ende kommt dieser fehler
Unrecognized function or variable 'Ikurz'.

Error in Projekt1>Fuellfaktor (line 122)
FB= Ikurz*uk; %Fläche B Wird berechnet

Error in Projekt1 (line 109)
Fuellfaktor; %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und
ausgeführt

obwohl diese variable im worskpace, nach ausführung, angezeigt wird, und sogar ein wert zubekommen hat.

deswegen verstehe ich den fehler nicht.

Zitat:



Datenui = readtable('D:\mathlab p 1\Kennlinie.csv','ReadVariableNames',false); % Excel Tabelle wird importiert





global u1
global i1
u1=Datenui{:,1}; % Speicher Spannungsdaten, spalte wird ausgelesen und in der Variable u1 gespeichert.
i1=Datenui{:,2}; % Speicher Stromdaten, spalte wird ausgelesen und in der Variable i1 gespeichert.



plot(u1,i1)% Grafik wird erstellt
hold on
title('Aufgabe 1C')
xlabel('U (V)') %x Achse wird beschriftet
hold on
ylabel('I (A)') %y Achse wird beschriftet
axis auto % Achsen werden eingestellt
hold off



%global P
title('Aufgabe 1D')
P=u1.*i1; % es wird die Leistung zu jedem strom-spannungs wert bereechnet und in der Variable P abgespeichert.




%Beide Graphen werden gezeichnet
[XYW,PL1,PL2] = plotyy(u1,i1,u1,P); % Um die X/Y Achse darstellen zu lassen
hold on %Wird angehalten, um die Grafik zu gestalten
title('Aufgabe 1E'); %Titel wird beschriftet
set(get(XYW(1),'Ylabel'),'String','I (A)'); %Beschriftung der 1.Aychsen links
set(get(XYW(2),'Ylabel'),'String','Watt (P)'); %Beschriftung der 2.Aychsen Rechts
xlabel('U (V)'); %Beschriftung der X Achse
hold off %Halt wird aufgehoben






[XYW,PL1,PL2] = plotyy(u1,i1,u1,P); % Graphik wird dargestellt
hold on %Wird angehalten, um die Grafik zu gestalten
title('Aufgabe 1F') %Tittel Name wird erstellt
grid on % ein Gitternetz wird hinzugefügt
% X Achse wird eingestellt von 0-50 in 5er schritten
xticks(0:5:50)
%Linke und rechte Achse werden skaliert
set(XYW(1),'ytick',[0:2:10]); %von 0-10 in 2er Schritten /1. Y-Achse
set(XYW(2),'ytick',[0:50:350]);%von 0-350 in 50er Schritten 2. Y-Achse
set(get(XYW(1),'Ylabel'),'String','I (A)'); %Beschriftung der 1.Aychsen links
set(get(XYW(2),'Ylabel'),'String','Watt (P)'); %Beschriftung der 2.Aychsen Rechts
xlabel('U (V)'); %Beschriftung der X Achse
hold off % halt wird aufgehoben

[XYW,L1,L2] = plotyy(u1,i1,u1,P); % Graphik wird dargestellt
hold on %Wird angehalten um Grafik einzustellen
title('Aufgabe 1G') %Tittel wird beschreiben
L1.LineStyle = '-'; %Grafik Lienen werden erstellt
L2.LineStyle = '--';%Grafik Lienen werden erstellt
grid on % ein Gitternetz wird hinzugefügt
% X Achse wird eingestellt von 0-50 in 5er schritten
xticks(0:5:50);
%Linke und rechte Achse werden skalierte
set(XYW(1),'ytick',[0:2:10]); %von 0-10 in 2er Schritten/ 1.Y-Achse
set(XYW(2),'ytick',[0:50:350]);%von 0-350 in 50er Schritten/2. Achse
set(get(XYW(1),'Ylabel'),'String','I (A)'); %Beschriftung der 1.Aychsen links
set(get(XYW(2),'Ylabel'),'String','Watt (P)'); %Beschriftung der 2.Aychsen Rechts
xlabel('U (V)'); %Beschriftung der X Achse
legend('U-I-Kennlinie','Leistung (P)') %Eine legende wird erstellt
hold off % Der Halt wird aufgehoben



[pw, pos] = max(P); % Leistungswert (P) wird aus der Tabelle gesucht, und in der Variable pw gespeichert .
uw= u1(pos); % wert (U) Spannung wird aus der Zeile, genommen, wo auch der wert, für (P) genommen wird für die weiteren Berechnungen
iw= i1(pos); % wert (I) Strom wird aus der Zeile, genommen, wo auch der wert, für (P) genommen wird für die weiteren Berechnungen


R=uw/iw; %Widerstandswert wird berechnet
Ikurz=uw/R; %Kurzschlusstrom wird berechnet
U0=max(u1); %Leerlaufspannungswert
uk=Ikurz*R; %Spanungswert des Kurzschlusses wird berechnet
I1L=U0/R; %Höchster Spannung wert wird berechnet
uw= u1(pos); % wert (U) Spannung wird aus der Zeile, genommen, wo auch der wert, für (P) genommen wird für die weiteren Berechnungen
iw= i1(pos); % wert (I) Strom wird aus der Zeile, genommen, wo auch der wert, für (P) genommen wird für die weiteren Berechnungen


FB= Ik*uk; %Fläche B Wird berechnet
FA= I1L*U0; %Fläche A wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
PMPP=U0*Ik*FF; %2a die maximale Leistung des Moduls (Pmpp) wird berechnet
PMPP %Dies ist der Wert ausgabe für die maximale Leistung (Pmpp)





global PMPP
Fuellfaktor; %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und ausgeführt
PMPP=U0*Ikurz*FF; %2a die maximale Leistung des Moduls (Pmpp) wird berechnet



wirkungsgrad1



sprintf(' Der Fuellfaktor beträgt %g%% \n Die Maixmale Leistung (P) beträgt: %g Watt \n Der Wirkungsgrad beträgt %g%% ' ,FF*100,pw,wk)


function Fuellfaktor % Dies ist die funktion Füllfaktor
FB= Ikurz*uk; %Fläche B Wird berechnet
FA= I1L*U0; %Fläche A wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.450
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.07.2021, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

Funktionen haben einen getrennten Workspace. Du musst Variablen, die innerhalb der Funktion verwendet werden sollen, an die Funktion übergeben und Variablen, die nach Abschluss der Funktion noch zur Verfügung stehen sollen, zurückgeben.
https://de.mathworks.com/help/matla.....e-functions-in-files.html

Die ursprüngliche Beschreibung war hier übrigens irreführend, da das Problem nicht ist, dass eine Funktion A nicht erkannt wurde, sondern eine Variable.

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
 
munto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2021, 01:23     Titel:
  Antworten mit Zitat      
Hi
so ich habe es zu lettz so gemacht.

Zitat:
function [FF]= Fuellfaktor(Ik,uk,I1L,U0) % Dies ist die funktion Füllfaktor
FB= Ik*uk; %Fläche B Wird berechnet
FA= I1L*U0; %Fläche A wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
end


dan komt dieser Fehler
Zitat:

Not enough input arguments.

Error in Projekt1>Fuellfaktor (line 121)
FB= Ik*uk; %Fläche B Wird berechnet

Error in Projekt1 (line 109)
Fuellfaktor; %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und ausgeführt


vorher hatte ich es so,
[quote]
Zitat:

function [Ik,uk,I1L,U0]= Fuellfaktor(FF) % Dies ist die funktion Füllfaktor
FB= Ik*uk; %Fläche B Wird berechnet
FA= I1L*U0; %Fläche A wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
end



dann komt dieser Fehler.
aber so müsste es doch richtig sein, wie ich es vorher femacht habe, siehe das letze qoute oben,direkt hierrruber

Zitat:

Unrecognized function or variable 'Ik'.

Error in Projekt1>Fuellfaktor (line 121)
FB= Ik*uk; %Fläche B Wird berechnet

Error in Projekt1 (line 109)
Fuellfaktor; %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und
ausgeführt



ich weiß eifnach nciht weiter
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.450
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.07.2021, 09:14     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
so ich habe es zu lettz so gemacht.

function [FF]= Fuellfaktor(Ik,uk,I1L,U0) % Dies ist die funktion Füllfaktor
FB= Ik*uk; %Fläche B Wird berechnet
FA= I1L*U0; %Fläche A wird berechnet
FF= FB/FA; %Füllfaktor wird berechnet
end


Das sieht doch gut aus. Du musst aber auch beim Funktionsaufruf die Parameter entsprechend angeben.

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
 
munto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2021, 11:30     Titel:
  Antworten mit Zitat      
wie so rum ist richtig?
Zitat:
function [FF]= Fuellfaktor(Ik,uk,I1L,U0)


habe verstanden das in [] die eingabe Paramter sind, also die variablen, die die function aus den obigen teil nimmt und was in () ist, sind die Ausgabeparmeter

die dan Matlab dann aus der function zurückgibt.

möchte das in der function die variable ik,uk,I1L,U0, eingeben werden, also das die function sich diese variable holt, und dann berechnet, es in die Variable FF speichert.
und später wird FF als wert ausgeben.


Zitat:



function FF = Fuellfaktor(ik,uk,I1L,U0)[/quote]
und aufruf der function Fuellfaktor, das ist ja der funtion name

Fuellfaktor(FF)

[/quote]
sagt matlab dieses an

Unrecognized function or variable 'FF'.

Error in Projekt1 (line 109)
Fuellfaktor(FF) %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und
ausgeführt


gebe ich es so ein

Zitat:

function [ik,uk,I1L,U0] = Fuellfaktor(FF)

aufruf:
Fuellfaktor(FF)


sagt mir matlab das an

Unrecognized function or variable 'FF'.

Error in Projekt1 (line 109)
Fuellfaktor(ik,uk,I1L,U0) %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird aufgerufen und
ausgeführt

gebe ich es so ein
Zitat:

function [ik,uk,I1L,U0] = Fuellfaktor(FF)

aufruf:
Fuellfaktor(FF)



sagt matlab mi das an
Error using Projekt1>Fuellfaktor
Too many input arguments.

Error in Projekt1 (line 109)
Fuellfaktor(ik,uk,I1L,U0) %Funktion FF(Füllfaktor), die den Füllfaktor berechnet wird
aufgerufen und ausgeführt

ich habe aber die function Füllfaktor nicht abgespichert, liegt es daran?
weil ich es ja alles aus dem skript holen möchte.

Zuletzt bearbeitet von munto am 12.07.2021, 12:11, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.450
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.07.2021, 11:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
habe verstanden das in [] die eingabe Paramter sind, also die variablen, die die function aus den obigen teil nimmt und was in () ist, sind die Ausgabeparmeter

Es ist genau umgekehrt. Das steht auch so in dem Link, den ich dir geschickt habe (Unterpunkt: Syntax for function definition)

Die Funktion passt aber wie gesagt. Du musst nur noch den Aufruf der Funktion entsprechend anpassen. Die Struktur des Aufrufs ist ähnlich wie die Deklarationszeile, man lässt nur das function-Schlüsselwort weg.

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
 
munto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.06.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2021, 12:20     Titel:
  Antworten mit Zitat      
Zitat:
habe es jetz so [FF] = Fuellfaktor(ik,uk,I1L,U0)

die funktion definiert.

den aufruf habe ich so definiert.

[FF]= Fuellfaktor(ik,uk,I1L,U0);



auf einmal funktioniert es, so wie ich es habe will, nach mehrfachen versuch und
umschrieben

habe es auch hinbekomme mit einer 2.funktion, nur er bibt mit dann diesen wert, in 123213e aus,
wie kann ich es umrechnen lassen, das er es mir in dec darstellt
edit:
habe ich selbst herausgefunden , muss bei der ausgabe %f und nicht %g verwenden

danke nochmals
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.