%
%
%10.2   Yagi-Antennen %<'FontWeight',MSVTITLWEIGHT,'FontSize',MSVTITLSIZE,'Color',MSVTITLCOLOR>
%
%
% Dieser Abschnitt behandelt die Optimierung des Gewinns von Yagi-Antennen. 
% Die Kostenfunktion ist dann  {\fontname{Courier}1/Gewinnfaktor} .  Da die Funktion  {\fontname{Courier}gain}  den 
% Gewinn in  {\fontname{Courier}dB}  liefert, muss dieser noch in den Gewinnfaktor umgerechnet werden, 
% Damit ergibt sich die Kostenfunktion zu
%
% {\fontname{Courier}10^{-(gain( ... )/20)}}
%
% Wir beginnen mit dem einfachsten Fall eines Dipols plus Reflektor fr  {\fontname{Courier}144 MHz} .
% Die variablen Parameter sind dabei der Abstand der beiden Elemente und Lnge 
% des Reflektors.  Als Antennen modell nehmen wir die Funktion  {\fontname{Courier}yagi} :
%
parameterhelp yagi
%
% In den Optimierungsprogrammen heissen die zu variierenden Parameter  {\fontname{Courier}x(1), x(2)} , ...
% In diesem Fall ist unser Antennenmodell:  
%
% {\fontname{Courier}yagi([0 x(1)],[x(2) x(3)])}
%
% Darin bedeuten:
%
% {\fontname{Courier}0    :    }Position des Dipols (in den Ursprung gelegt)
% {\fontname{Courier}x(1) :    }x-Position des Reflektors (negativ fr Strahlung in x-Richtung)
% {\fontname{Courier}x(2) :    }Lnge des Dipols (wird hier zunchst nicht variiert)
% {\fontname{Courier}x(3) :    }Lnge des Reflektors
%
% Wenn man keine genaue Vorstellung des Gebirges der Kostenfunktion ber den 
% Parametern hat, kann man sich im Falle von zwei Parametern mit der Funktion  
% {\fontname{Courier}gridopt}  eine bersicht verschaffen:
%
parameterhelp gridopt
%
% Erster Parameter von   {\fontname{Courier}gridopt}  ist die Kostenfunktion, die als String einzugeben 
% ist. 
% Der zeite Parameter ist der Parametervektor des Antennenmodells.  Die zu 
% variierenden Parameter drfen hier beliebige Werte enthalten (hier also Platz 1 
% und 3).  Die Lnge des Dipols nehmen wir an als  {\fontname{Courier}1.0m} .  Damit ist  {\fontname{Courier}x = [0 1.0 0]} .
% Der dritte Parameter gibt an, welche Komponenten des Parametervektors  {\fontname{Courier}x}  
% variiert werden sollen.  In unserem Fall sind das  {\fontname{Courier}[1  3]} .
% Der vierte Parameter von  gridopt  gibt das rechteckige Gitter als 3*2-Matrix an:
%
% {\fontname{Courier}grid = [-0.40  1.00;   -0.06  1.05;   0.02  0.005];}
%
% Dies bedeutet:
%
% Der erste Parameter (die Position des Reflektors) wird variiert zwischen 
% {\fontname{Courier}-0.40m}  und  {\fontname{Courier}-0.06m}  mit der Schrittweite  {\fontname{Courier}0.02m}  und
% der zweite Parameter (die Lnge des Reflektors) wird variiert zwischen 
% {\fontname{Courier}1.00m}  und  {\fontname{Courier}1.05m}  mit der Schrittweite  {\fontname{Courier}0.005m} .
% 
% Nun knnen wir den Optimierungsauftrag zusammenstellen:
%% Achtung:  alle Optimierungen knnen mehrere Minuten dauern!
grid = [-0.40  1.00;   -0.06  1.05;   0.02  0.005];
cost = '10^-(gain(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)/20)';
[cm,xo] = gridopt(cost, [0 1.0 0], [1 2], grid, 0, '0', 1, 1)
%
% Das Tal ist sehr flach und grossflchig.  Das absolute Minimum liegt bei einem 
% Abstand zwischen Dipol und Reflektor von nur  {\fontname{Courier}12cm} .  Das ist nicht nur mechanisch 
% ungnstig sondern vor allem auch wegen der geringen Impedanz:
%
imp(yagi([0 xo(1)],[1.0 xo(2)],0.01,0,4),144)
%
% Dies ist ein Beispiel dafr, dass das praktische Optimum meistens ein Kompromiss ist.  
% Prinzipiell knnte man versuchen, alle Randbedingungen mit in die Kostenfunktion zu
% integrieren.  Das ist aber aufwendig und erfordert Fingerspitzengefhl.  Fast immer ist es
% sinnvoll, die Exploration wie oben durchzufhren und die Einhaltung von Randbedingungen 
% danach zu prfen.  Dennoch wollen wir nachfolgend versuchen, die Impedanz zu bercksichtigen.
%
% Die glatte Flche des breiten Tales bei der obigen Optimierung zeigt, dass es mit der
% Funktion  {\fontname{Courier}gradopt}  auch gehen msste.  Die Impedanz bercksichtigen wir durch 
% Subtraktion des Logarithmus' der Impedanz:
%
x0 = [-0.3  1.05; 0.01 0.005];
cost = '10^-(0.05*gain(yagi([0 x(1)],[1 x(2)],0.01,0,2),144))';
cost = [cost '-log(real(imp(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)))'];
[cm,xo] = gradopt(cost,[0 0],[1 2],x0,180)
antgraph(yagi([0 xo(1)],[1 xo(2)]));
rph(yagi([0 xo(1)],[1 xo(2)]),144);
%
% Offensichtlich gelingt der Versuch, denn die Impedanz ist mit fast  {\fontname{Courier}100 \Omega}  sogar grsser als
% die des Dipols allein.  Die Impedanz sollte deshalb weniger Gewicht in der Kostenfunktion 
% haben.  
%
% Wir versuchen es mit dem Faktor  {\fontname{Courier}0.05} :
%
%
%
%
%
x0 = [-0.3  1.05; 0.01 0.005];
cost = '10^-(0.05*gain(yagi([0 x(1)],[1 x(2)],0.01,0,2),144))';
cost = [cost '-0.05*log(real(imp(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)))'];
[cm,xo] = gradopt(cost,[0 0],[1 2],x0,180)
antgraph(yagi([0 xo(1)],[1 xo(2)]));
rph(yagi([0 xo(1)],[1 xo(2)],0.01,0,2),144);
%
% Das Ergebnis ist jetzt hinsichtlich  Gewinn, Strahlungsdiagramm und Impedanz gut.
%
% Die Funktion  {\fontname{Courier}randopt}  ist, insbesondere wenn man mit grosser Standardabweichung 
% fr die zufllige Schrittwahl startet, zuverlssiger als  {\fontname{Courier}gradopt} , weil sie mit den 
% Zufallszahlen zumindest aus kleinen Nebenminima wieder herausfindet.  Wir testen 
% denselben Fall wie oben:
%
x0 = [-0.40  1.04; 0.01 0.002];
cost = '10^-(0.05*gain(yagi([0 x(1)],[1 x(2)],0.01,0,2),144))';
cost = [cost '-0.05*log(real(imp(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)))'];
[cm,xo] = randopt(cost,[0 0],[1 2],x0,180)
antgraph(yagi([0 xo(1)],[1 xo(2)]));
rph(yagi([0 xo(1)],[1 xo(2)],0.01,0,2),144);
%
%
% Wir fgen dieser Antenne noch einen Direktor hinzu und optimieren nur dessen 
% Position und Lnge.  Die Impedanz wird nicht bercksichtigt:
%
x0 = [0.3  0.98; 0.01 0.005];
cost = '10^-(0.05*gain(yagi([0 -0.380 x(1)],[1 1.032 x(2)],0.01,0,2),144))';
[cm,xo] = gradopt(cost,[0 0],[1 2],x0,180)
antgraph(yagi([0 -0.380 xo(1)],[1 1.032 xo(2)],0.01,0,2));
rph(yagi([0 -0.380 xo(1)],[1 1.032 xo(2)],0.01,0,2),144);
%
% Mglicherweise ist nun der Reflektor nicht mehr optimal.  Deshalb optimieren wir 
% diesen nochmals bei festgehaltenem Direktor:
%
x0 = [-0.31  1.040; 0.01 0.005];
cost = '10^-(0.05*gain(yagi([0 x(1) 0.395],[1 x(2) 0.950],0.01,0,2),144))';
cost = [cost '-0.001*log(real(imp(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)))'];
[cm,xo] = gradopt(cost,[0 0],[1 2],x0,180)
antgraph(yagi([0 xo(1) 0.395],[1 xo(2) 0.950],0.01,0,2));
rph(yagi([0 xo(1) 0.395],[1 xo(2) 0.950],0.01,0,2),144);
%
% Natrlich kann man prinzipiell alle 4 Parameter von Reflektor und Direktor gleichzeitig 
% optimieren.  Der Rechenbedarf ist dann sehr hoch.  Hufig sind die Resultate unbrauchbar,
% weil die blinde Exploration in einem vieldimensionalen Gebirge leicht in die Irre fhrt.
% Wir versuchen dies:
%
x0 = [-0.3  1.04  +0.3  0.98;  0.01  0.005  0.01  0.005];
cost = '10^-(0.05*gain(yagi([0 x(1) x(3)],[1 x(2) x(4)],0.01,0,2),144))';
cost = [cost '-0.001*log(real(imp(yagi([0 x(1)],[1 x(2)],0.01,0,2),144)))'];
[cm,xo] = gradopt(cost,[0 0],1:4,x0,180)
antgraph(yagi([0 xo(1) xo(3)],[1 xo(2) xo(4)],0.01,0,2));
rph(yagi([0 xo(1) xo(3)],[1 xo(2) xo(4)],0.01,0,2),144);
%
% Fr  {\fontname{Courier}28.1 MHz} geht das natrlich auch.  Damit es nicht so lange dauert, wird hier als 
% Anfangswert schon das bislang beste Ergebnis angegeben:
%
x0 = [-2.17  5.17  2.55  4.89;  0.05  0.02  0.05  0.02];
cost = '10^-(0.05*gain(yagi([0 x(1) x(3)],[5.1 x(2) x(4)],0.02,0,2),28.1))';
cost = [cost '-0.01*log(real(imp(yagi([0 x(1) x(3)],[5.1 x(2) x(4)],0.02,0,2),28.1)))'];
[cm,xo] = gradopt(cost,[0 0],1:4,x0,180)
antgraph(yagi([0 xo(1) xo(3)],[5.1 xo(2) xo(4)],0.02,0,2));
rph(yagi([0 xo(1) xo(3)],[5.1 xo(2) xo(4)],0.02,0,2),28.1);
%
%
% Je mehr Parameter zu ndern sind desto aufwndiger wird die Optimierung.  Wir 
% optimieren alle Positionen und Lngen smtlicher  6  parasitren Elemente der 
% 7-Element-Yagi in Richtung hheren Gewinns ohne Rcksicht auf die Impedanz:
%
%% Achtung:  Die Zeitgrenze ist auf  5 Minuten gesetzt !
x0(1,1:6)  =   [-0.39    0.165   0.54    1.08    1.65    2.34];
x0(1,7:12) = 2*[ 0.5175  0.4775  0.4725  0.4700  0.4675  0.4550];
x0(2,1:6)  =     0.01;
x0(2,7:12) =     0.005;
costfcn    = '10^-(0.05*gain(yagi([0 x(1:6)],[1 x(7:12)],0.01,0,2),144))';
[cm,xo]    = gradopt(costfcn,[0 0 0 0 0 0 0 0 0 0 0 0],1:12,x0,300);
antgraph(yagi([0 xo(1:6)],[1 xo(7:12)]));
rph(yagi([0 xo(1:6)],[1 xo(7:12)]),144);
%
% Dies ist ein weiteres Beispiel fr eine unglckliche Optimierung.  Natrlich steigt 
% der Gewinn mit grsser werdender Lnge der Antenne.  Die Suche wird also kaum ein 
% Ende finden.  Es ist deshalb sinnvoll, die mechanische Lnge der Antenne bzw. die 
% Position des ussersten Direktors vorzugeben.  Im nachfolgenden Beispiel legen wir 
% sowohl die Position des Reflektors auf  -0.39m  wie die des ussersten Direktors 
% auf  2.43m  fest und optimieren den Gewinn einer solchen 7-Element-Yagi mit  2mm
% starken Elementen.  Um Zeit zu sparen, sind hier schon die bislang besten Dimensionen
% als Anfangswerte eingetragen:
%
%
%
%
%% Evtl. "clear workspace" erforderlich.
x0(1,:) = [0.261  0.586  0.859  1.589  1.009  0.975  0.819  0.950  0.941  0.949];
x0(2,:) = [0.03*[1 1 1 1]   0.005*[1 1 1 1 1 1]];
costfcn = '10^-(0.05*gain(yagi([0 -0.39 x(1:4) 2.34],[1 x(5:10)],0.002,0,2),144))';
[cm,xo] = randopt(costfcn,[0 0 0 0 0 0 0 0 0 0],1:10,x0,180);
antgraph(yagi([0 -0.39 xo(1:4) 2.34],[1 xo(5:10)],0.002,0,2));
rphv(yagi([0 -0.39 xo(1:4) 2.34],[1 xo(5:10)],0.002,0,2),144,0,1);
%
% Auch dieses Ergebnis ist lehrreich.  Denn es zeigt whrend der Optimierung, dass der 
% zweite Direktor immer krzer wird.  Offenbar strt er nur.  Wir nehmen ihn deshalb 
% weg und optimieren die verbleibende 6-Element-Antenne:
%
x0(1,:) = [0.261  0.859  1.589  1.009  0.975  0.950  0.941  0.949];
x0(2,:) = [0.03*[1 1 1]   0.005*[1 1 1 1 1]];
costfcn = '10^-(0.05*gain(yagi([0 -0.39 x(1:3) 2.34],[1 x(4:8)],0.002,0,2),144))';
[cm,xo] = randopt(costfcn,[0 0 0 0 0 0 0 0],1:8,x0,180);
antgraph(yagi([0 -0.39 xo(1:3) 2.34],[1 xo(4:8)],0.002,0,2));
rphv(yagi([0 -0.39 xo(1:3) 2.34],[1 xo(4:8)],0.002,0,2),144,0,1);
%
% Die resultierende  6-Element-Antenne hat  0.5dB  mehr Gewinn als die zum Ausgangspunkt 
% genommene  7-Element-Antenne bei derselben Lnge.  Dieses Beispiel zeigt, dass es 
% relativ leicht ist,  0.5 dB  an zustzlichem Gewinn zu erzielen.  Allerdings muss man 
% dann Abstriche machen beim Vor/Rck-Verhltnis und evtl. ein ausgefranztes Strahlungs-
% diagramm und eine Anpassung akzeptieren.
%