summaryrefslogtreecommitdiff
path: root/openEMS/matlab/plotFFdB.m
diff options
context:
space:
mode:
Diffstat (limited to 'openEMS/matlab/plotFFdB.m')
-rw-r--r--openEMS/matlab/plotFFdB.m78
1 files changed, 78 insertions, 0 deletions
diff --git a/openEMS/matlab/plotFFdB.m b/openEMS/matlab/plotFFdB.m
new file mode 100644
index 0000000..07e96e3
--- /dev/null
+++ b/openEMS/matlab/plotFFdB.m
@@ -0,0 +1,78 @@
+function h = plotFFdB(nf2ff,varargin)
+% h = plotFFdB(nf2ff,varargin)
+%
+% plot far field pattern in dBi
+%
+% input:
+% nf2ff: output of CalcNF2FF
+%
+% variable input:
+% 'freq_index': - use the given frequency index, see nf2ff.freq
+% - default is 1
+% 'xaxis': - 'phi' (default) or 'theta'
+% 'param': - array positions of parametric plot
+% - if xaxis='phi', theta is parameter, and vice versa
+% - default is 1
+%
+% example:
+% plotFFdB(nf2ff, 'freq_index', 2, ...
+% 'xaxis', 'phi', 'param', [1 46 91])
+%
+% see examples/NF2FF/infDipol.m
+%
+% See also CalcNF2FF, plotFF3D, polarFF
+%
+% openEMS matlab interface
+% -----------------------
+% author: Thorsten Liebig, Stefan Mahr
+
+% defaults
+freq_index = 1;
+xaxis = 'phi';
+param = 1;
+
+for n=1:2:numel(varargin)
+ if (strcmp(varargin{n},'freq_index')==1);
+ freq_index = varargin{n+1};
+ elseif (strcmp(varargin{n},'xaxis')==1);
+ xaxis = varargin{n+1};
+ elseif (strcmp(varargin{n},'param')==1);
+ param = varargin{n+1};
+ else
+ warning('openEMS:plotFFdB',['unknown argument key: ''' varargin{n} '''']);
+ end
+end
+
+D_log = nf2ff.E_norm{freq_index} / max(nf2ff.E_norm{freq_index}(:));
+D_log = 20*log10(D_log) + 10*log10(nf2ff.Dmax(freq_index));
+
+if (strcmp(xaxis,'theta')==1);
+ xax = nf2ff.theta;
+ yax = D_log(:,param);
+ parval = nf2ff.phi(param);
+ param = 'phi';
+elseif (strcmp(xaxis,'phi')==1);
+ xax = nf2ff.phi;
+ yax = D_log(param,:);
+ parval = nf2ff.theta(param);
+ param = 'theta';
+else
+ error('openEMS:plotFFdB','unknown parameter to ''xaxis''');
+end
+
+%figure
+h = plot( xax / pi * 180 , yax );
+xlabel( sprintf('%s (deg)',xaxis ));
+ylabel( 'directivity (dBi)');
+
+createlegend = @(d)sprintf('%s = %3.1f',param,d / pi * 180);
+legendtext = arrayfun(createlegend,parval,'UniformOutput',0);
+legend( legendtext );
+title( sprintf('far field pattern @ f = %e Hz',nf2ff.freq(freq_index)) );
+grid on;
+
+if (nargout == 0)
+ clear h;
+end
+
+end