Effects of the Antenna-Orientation
One feature of the model is that it allows to freely orient the antennas at the transmitter and receiver. In the following, two cross-polarized patch antennas are aligned on the optical axis facing each other. The surface normal vectors of the transmit and the receive patch are aligned with the LOS. The transmitter is rotated from -90° to 90° around the optical axis. The real and imaginary parts of the channel coefficients are then calculated for each angle. Each real and imaginary part is then normalized by its maximum and the results are plotted. The calculation is done for both, linearly and crossed polarized elements.
Contents
Model and Antenna Setup
Here, we parametrize the simulation. We place the receiver 10 m away from the transmitter and chose the scenario "LOSonly". Thus, no NLOS components are present. The receiver is set up as a multi-element array using both, circular and linear polarization.
clear all close all s = simulation_parameters; s.sample_density = 2; s.show_progress_bars = 0; l = layout(s); l.track.generate('linear',0,0); l.track.scenario = 'LOSonly'; l.rx_position = [11;0;0]; l.tx_position = [0;0;0]; a = array('rhcp-lhcp-dipole'); a.generate('custom',3,90,90,0); a.set_grid( (-180:10:180)*pi/180 , (-90:10:90)*pi/180 ); a.rotate_pattern(180,'z',3); a.copy_element(3,4); a.rotate_pattern(90,'x',4); b = a.copy_objects; a.rotate_pattern(180,'z'); l.tx_array = a; l.rx_array = b;
Initial parameter and coefficient generation
p = l.create_parameter_sets; % Create parameter sets
[~,cb] = p.get_channels;
Iteration over all angles
Next, we iterate over all angles to calculate the channel response for different orientations of the tx antenna.
rot = -120:10:120; h = zeros(4,4,numel(rot)); for n=1:numel(rot) cc = a.copy_objects; cc.rotate_pattern( rot(n) , 'x'); cb.tx_array = cc; c = cb.get_channels; h(:,:,n) = c.coeff(:,:,1,1); end
Linear Polarization results
set(0,'defaultTextFontSize', 16) set(0,'defaultAxesFontSize', 16) set(0,'DefaultAxesFontName','Times') set(0,'DefaultTextFontName','Times') figure('Position',[ 100 , 100 , 660 , 400]); g = h([3,4],[3,4],:); plot(rot,squeeze(real(g(1,1,:))),'-sk','Linewidth',0.5,'MarkerfaceColor','k','Markersize',12) hold on plot(rot,squeeze(real(g(2,2,:))),'-db','Linewidth',0.5,'MarkerfaceColor','b','Markersize',8) plot(rot,squeeze(real(g(2,1,:))),'-or','Linewidth',0.5,'MarkerfaceColor','r','Markersize',8) plot(rot,squeeze(real(g(1,2,:))),'-^g','Linewidth',0.5,'MarkerfaceColor','g','Markersize',8) plot(rot,squeeze(imag(g(1,1,:))),'--sk','Linewidth',0.5,'Markersize',12) plot(rot,squeeze(imag(g(2,2,:))),'--db','Linewidth',0.5,'Markersize',8) plot(rot,squeeze(imag(g(2,1,:))),'--or','Linewidth',0.5,'Markersize',12) plot(rot,squeeze(imag(g(1,2,:))),'--^g','Linewidth',0.5,'Markersize',12) hold off xlabel('Rotaion Angle') ylabel('Normalized Amplitude')

Circular Polarization results
figure('Position',[ 100 , 100 , 660 , 400]); g = h([1,2],[1,2],:); plot(rot,squeeze(real(g(1,1,:))),'-sk','Linewidth',0.5,'MarkerfaceColor','k','Markersize',12) hold on plot(rot,squeeze(real(g(2,2,:))),'-db','Linewidth',0.5,'MarkerfaceColor','b','Markersize',8) plot(rot,squeeze(real(g(2,1,:))),'-or','Linewidth',0.5,'MarkerfaceColor','r','Markersize',8) plot(rot,squeeze(real(g(1,2,:))),'-^g','Linewidth',0.5,'MarkerfaceColor','g','Markersize',8) plot(rot,squeeze(imag(g(1,1,:))),'--sk','Linewidth',0.5,'Markersize',12) plot(rot,squeeze(imag(g(2,2,:))),'--db','Linewidth',0.5,'Markersize',8) plot(rot,squeeze(imag(g(2,1,:))),'--or','Linewidth',0.5,'Markersize',12) plot(rot,squeeze(imag(g(1,2,:))),'--^g','Linewidth',0.5,'Markersize',12) hold off xlabel('Rotaion Angle') ylabel('Normalized Amplitude')

close all disp(['QuaDRiGa Version: ',simulation_parameters.version])
QuaDRiGa Version: 1.0.7-191