|
munto |
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 07.06.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.07.2021, 15:48
Titel: Haupt sub funktion
|
|
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?
|
|
|
|
|
ueg |
Forum-Fortgeschrittener
|
|
Beiträge: 51
|
|
|
|
Anmeldedatum: 15.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2021, 17:37
Titel:
|
|
Hallo
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.
|
|
|
munto |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 07.06.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2021, 13:05
Titel:
|
|
|
|
|
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
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.07.2021, 13:58
Titel:
|
|
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 ;)
|
|
|
munto |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 07.06.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2021, 00:23
Titel:
|
|
|
|
|
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
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.07.2021, 08:14
Titel:
|
|
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 ;)
|
|
|
munto |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 07.06.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2021, 10:30
Titel:
|
|
|
|
|
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.
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, 11:11, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 12.07.2021, 10:48
Titel:
|
|
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 ;)
|
|
|
munto |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 26
|
|
|
|
Anmeldedatum: 07.06.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.07.2021, 11:20
Titel:
|
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|