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

Aufruf und Werte Übergabe

 

ECO
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 07.07.13
Wohnort: Berlin
Version: R2014b (Mac)
     Beitrag Verfasst am: 29.11.2014, 14:57     Titel: Aufruf und Werte Übergabe
  Antworten mit Zitat      
Hi Leute,

ich habe eine Programmieraufgabe für eine Solarzelle und sie ist auch soweit fertig,
aber würde sie gerne noch etwas eleganter lösen wollen.

Funktionsaufruf ist

[I]= PVmodules(0:0.01:44.8,1,25)

Code:


function I1 = PVmod(V,G,T)
 
% Define Constants

k= 1.381e-23;   q= 1.6e-19;   Vg= 1.12;
Ns=72;          Voc= 44.8;    Isc1= 5.5;
Tstc= 298;      K_0= 0.065;   n=1;
Rs=.008;        Rsh=100;    
T=T+273;        G=G*1000;

% Equations

% Calculate Il from (3) & (4) using input Temp.

Il= Isc1*(G/1000)*(1+K_0*(T-Tstc));

% Get Is from (5) at STC
Is= Il/(exp((q*Voc/Ns)/(n*k*Tstc))-1);

% then get Is for any Temperature using:
Is_T= Is*((T/Tstc)^(3/n))*exp(((-q*Vg)/(n*k))*((1/T)-(1/Tstc)));

sz=size(V);
I1=zeros(sz);

for i=1:length(V)    
   
    I=5;  
    eps=1;
    N=0;
    Nmax=25;  
   
    while eps>=1e-5&&N<=Nmax                              
       
       V1=V(i);
       Ivals=I;
   
       % Newton Method
       y=I- (Il-I-Is_T*(exp(q*(V1/Ns+I*Rs)/(n*k*T))-1)- (V1/Ns+I*Rs)/Rsh)/...
           (-1- (Is_T*q*Rs/(n*k*T))*exp(q*(V1/Ns+I*Rs)/(n*k*T))-(Rs/Rsh));
       
       IvalI=[Ivals;y];
       eps=abs(y-I);
       I=y;
       N=N+1;

    end
   
    if I >= 0    
       I1(i)=I;  
    else  
       I1(i) = 0;
    end  
   
   P=V.*I1;        
end

% Output Format

subplot(121), plot(V,I1),
title('PV Module'),
xlabel('Voltage (v)'),
ylabel('Current (A)'),
grid on ,
hold on ,

subplot(122), plot(V,P),
title('PV Module'),
xlabel('Voltage (v)'),
ylabel('Power (P)'),
grid on,
hold on,

end      


 


Den Code benutze ich fast jedesmal nur passe ich das Output Format immer wieder an.
Mein Frage ist kann ich immer diesen Code mit einer anderen Funktion Aufrufen und die
berechneten Werte übernehmen und in der anderen Funktion die Ausgabe realisieren.

Also nach dem folgenden Schema

funktion A{
(a,b,c,....)= funktion B()

Berechnung

formatierte Ausgabe

}

funktion C{
(a,b,c,....)= funktion B()

Berechnung

formatierte Ausgabe

}

usw.

Gruß ECO
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.11.2014, 12:12     Titel:
  Antworten mit Zitat      
Hallo,

ehrlich gesagt verstehe ich dein Problem bzw. dein Aufbauschema nicht.

Was ist (a,b,c,....)= funktion B() ? Deine Funktion I1 = PVmod(V,G,T) ?

Mehrere Output Variablen werden in einem Vektor so definiert. Einfach die Variable der Funktion in die [] dazuschreiben.

Code:

function [I1, P] = PVmod(V,G,T)
...
end

% Aufruf PVmod in einer anderen Funktion
[I1, P] = PVmod(V,G,T);
% P und I sind nun hier bekannt und können verwendet werden.
 


Was meinst du mit formatierter Ausgabe? PVmod erstellt doch bei Aufruf schon einen Plot.
Private Nachricht senden Benutzer-Profile anzeigen
 
ECO
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 07.07.13
Wohnort: Berlin
Version: R2014b (Mac)
     Beitrag Verfasst am: 30.11.2014, 21:45     Titel:
  Antworten mit Zitat      
Hi DSP,

naja PVmod macht eigentlich alles was ich will.
Es ist aber so das ich den Code bei anderen Berechnungen auch
verwende, aber halt die Ausgabe anders ist.

Hier zb. soll ich den Kurvenverlauf eines PV Moduls rausfinden.
Bei einer anderen Aufgabe soll ich den Maximum Power Point (MPPT)
bestimmen und ect. Also kurz vor der Ausgabe mache ich mit den
gegebenen Werte mit bestimmten Formeln die Berechnungen.

Was ich wollte war im Grunde,

das ich PVmod mit anderen Funktion aufrufe
PVmod berechnet alles was ich brauche und übergibt die
Werte zurück an die Ausgangsfuktion und
und in der Ausgangsfunktion geschieht dann die Ausgabe

Zitat:
Was ist (a,b,c,....)= funktion B() ?


Das sollte einfach einer Art Schema sein. Nichts in meinem Code.
Damit wollte ich zeigen was ich meine. Hat glaube ich eher das Gegenteil
bewirkt.

Gruß
Eco
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 30.11.2014, 22:04     Titel:
  Antworten mit Zitat      
ECO hat Folgendes geschrieben:

Was ich wollte war im Grunde,

das ich PVmod mit anderen Funktion aufrufe
PVmod berechnet alles was ich brauche und übergibt die
Werte zurück an die Ausgangsfunktion und
und in der Ausgangsfunktion geschieht dann die Ausgabe


Warum definierst du dann nicht einfach alle Werte die von PVmod bereitgestellt werden als Funktionsoutput, so dass dieser in einer anderen Funktion für die weitere Berechnung und Ausgabe vorhanden ist?

Für Berechnung und Ausgabe braucht es nicht unbedingt eine Funktion, es reicht auch ein anderer m-file. In diesem m-file rufst du PVmod auf, welche dir alle Daten zur Weiterverarbeitung liefert. Ich habe dir ja bereits gepostet, wie man mehrere Funktionoutputs definiert. PVmod speicherst du einfach in einem eigenen m-file als PVmod.m ab.

Ich würde auch die Darstellung unter "% Output Format " rausnehmen und in die anderen Funktionen packen.


Code:

function [] = BerechnungAusgabe()

% Input PVmod
V = ...
T = ...
G = ...

% Aufruf PVmod
[I1, P] = PVmod(V,G,T);
% P und I1 sind nun hier bekannt und können verwendet werden.

% Berechnung
...

% Ausgabe
subplot(121), plot(V,I1),
title('PV Module'),
xlabel('Voltage (v)'),
ylabel('Current (A)'),
grid on ,
hold on ,

subplot(122), plot(V,P),
title('PV Module'),
xlabel('Voltage (v)'),
ylabel('Power (P)'),
grid on,
hold on,
 


Wenn das immer noch nicht das ist was du suchst, verstehe ich ich dein Vorhaben nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
ECO
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 07.07.13
Wohnort: Berlin
Version: R2014b (Mac)
     Beitrag Verfasst am: 01.12.2014, 12:58     Titel:
  Antworten mit Zitat      
Hallo DSP,

Das ist genau was ich suche nur wusste ich nicht wie das
Funktioniert.

Vielen dank für deine mühe.

Gruß

Eco
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 - 2025 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.