Následující text mapuje kód funkce vh_reseni, tato funkce je využita ve skriptu zjišťujícím velikost nadlepšeného odtoku z nádrže pro jistou zabezpečenost.
(Ke stažení zde.)
Reseni vodohospodarske zasobni funkce nadrze
function [ Pt,Po,por_mes,por_rok ] = vh_reseni( P,Vz,Qn )
Zkontrolovani poctu vstupnich argumentu a jejich pripadne zjisteni
if nargin < 1
error('Nezadan zadny vstupni argument')
end
if nargin <2
Vz=input('Zadejte pozadovaný objem nadrze v milionech m^3 : ')*1e6
end
if nargin <3
Qn=input('Zadejte nadlepseny prutok v [m^3/s]: ')
end
Vlastni reseni zasobni funkce nadrze
a=size(P);
mes=a(1,2);
rok=a(1,1);
k=0;
for i=1:rok
for j=1:mes
k=k+1;
Q(k,1)=P(i,j);
end
end
por=0;
Vt_minul=Vz;
konec=length(Q);
Vt=zeros(konec,1);
por_rok=0;
novy_rok=1;
for b=1:konec
if mod(b-1,12)==0
novy_rok=1;
end
Vt(b,1)=Vt_minul+(Q(b,1)-Qn)*3600*24*30.5;
if Vt(b,1)>Vz
Vt(b,1)=Vz;
else
if Vt(b,1)<0
Vt(b,1)=0;
por=por+1;
if novy_rok==1
por_rok=por_rok+1;
novy_rok=0;
end
end
end
Vt_minul=Vt(b,1);
end
ZOBRAZENI VYSLEDKU
Pt=(length(Q)-por-0.3)/(length(Q)+0.4)*100;
Po=(length(Q)/12-por_rok-0.3)/(length(Q)/12+0.4)*100;
por_mes=por;
por_rok=por_rok;
ZOBRAZENI GRAFU
figure
plot(Q);
xlabel('zacatky roku','VerticalAlignment','cap');
ylabel('prutok Q [m^3.s^{-1}');
title('Prubeh pritoku do nadrze','FontWeight','bold','FontSize',14);
mlabel=length(P)/12+1;
dlabel=round(mlabel/21);
dtick=dlabel*12;
mtick=length(P);
label=num2str((1:dlabel:mlabel)');
tick=(0:dtick:mtick);
set(gca,...
'XTickLabel',{label},...
'XTick',[tick],'XLim',[0 mtick],'FontSize',8);
NameFields=(strread(num2str(1:dlabel:mlabel),'%s'))';
XTick=tick;
xticklabel_rotate(XTick,45,NameFields,'interpreter','none');
figure
plot(Vt,'r -','linewidth',2);
xlabel('zacatky roku','VerticalAlignment','cap');
ylabel('objem vody v nadrzi V [m^3]');
title('Objem vody v nádrzi','FontWeight','bold','FontSize',14);
label2=num2str((1:dlabel:mlabel)');
tick2=(0:dtick:mtick);
set(gca,...
'XTickLabel',{label2},...
'XTick',[tick2],'XLim',[0 mtick],'FontSize',8);
xticklabel_rotate(XTick,45,NameFields,'interpreter','none');
end