I am trying to write a function but it will not work.
Ältere Kommentare anzeigen
function [ absorption ] = solar_rad( nc,lat,t,I)
%Calculating absorbed solar radiation
% Calculating the absorbed solar radiaiton as a function of time of
% day and year, cloud cover, and latitude, using a time step of one hour.
%BEGIN
for I=1:365;
for T=[0:24];
t=T*3600;
end
delta=-23.45*(pi/180)*cosd(2*pi)/365*(I+9); %Declination
S=1357+45*cosd((2*pi)/365)*(I); %Solar constant
for lat=0;
sinh=max(sind(lat)*sind(delta)+cosd(lat)*cosd(delta)*cosd((2*pi/86400)*(t+43200)));
m=1/sinh; %optical length
Cext=0.128-0.0253*(log(m)); %Extinction
end
for h=asin(max(sind(lat)*sind(delta)+cosd(lat)*cosd(delta)*cosd((2*pi)/86400)*(t+43200)));
i=(pi/2)-h; %angle of incidence
j=asin(0.75*sin(i)); %angle of reflection
r=0.5*abs((sin(i-j)^2/sin(i+j)^2)+(tan(i-j)^2)/(tan(i+j)^2)); %reflectance
end
end
for nc=0:100;
if h>0
Insd=S*(exp(-Cext*m))*(sin(h))*(1-(0.71*nc)); %direct incoming solar radiation at sea level
end
if h<=0
Insd=0;
end
for Insg=0.52*nc*Insd; %global radiation
Q_sun=Insd*(1-r)+0.97*Insg;
end
end
[absorption]=solar_rad(0,0,t,I);
Whenever I run it I get this error message:
Error in solar_rad (line 7)
for I=1:365;
Output argument "absorption" (and maybe others) not assigned during call to "\\fs-home-k\home-005\osp42f\My
Documents\MATLAB\Programmes\solar_rad.m>solar_rad".
Akzeptierte Antwort
Weitere Antworten (1)
r=0.5*abs((sin(i-j)^2/sin(i+j)^2)+(tan(i-j)^2)/(tan(i+j)^2));
That is your maths for 'r'. Without putting it into my Matlab it seems unlikely that will return an integer every time.
Q_sun=Insd(1-r)+0.97*Insg;
That is your maths indexing into Insd, which uses 'r'. Even if 'r' were an integer though the fact you use '1-r' means you will never end up with an integer index into your Insd array unless r == 0;
2 Kommentare
Meghan
am 12 Nov. 2014
Bearbeitet: Star Strider
am 12 Nov. 2014
You don't want a ';' at the end of that for loop line, although that maybe does no harm.
The error message tells you exactly what the problem is though despite perhaps erroneously pointing at that line.
You have stated there should be an output argument called 'absorption' yet you never create it.
Kategorien
Mehr zu Solar Power finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!