www.gusucode.com > LTE仿真Matlab源码 > LTE_winner_channel_model_antenna_init_mobilkom.m

    function Arrays = LTE_winner_channel_model_antenna_init_mobilkom(spacing,TX_type,RX_type)
% LTE winner channel model - to generate channel realization using Winner
% Model II [1]
%
% Author: Michal Simko, msimko@nt.tuwien.ac.at
% (c) by INTHFT
% www.nt.tuwien.ac.at
%
% [1]   IST-WINNER D1.1.2 P. Ky鰏ti, et al., "WINNER II Channel Models", ver 1.1, Sept. 2007.
%       Available: https://www.ist-winner.org/WINNER2-Deliverables/D1.1.2v1.1.pdf
% [2]   TSG-RAN Working Group 4 (Radio) meeting #38 R4-060334
%
% input :
% output:   Arrays                      ... struct antenna specification using Winner II channel model
%
% date of creation: 2009/10/13
% last changes: 2009/10/13  Simko

global LTE_params;

% add Winner Model code path
path(path,'.\Winner Channel Model');
if exist('.\Winner Channel Model\dipole.m')==0
    error('Please download the Winner+ II channel model from http://projects.celtic-initiative.org/winner+/Documents/Publications/WIM2_3D_ant_ver064_220908.zip and extract it into this folder');
end


%% Base Station antennas

NAz=3*120; %3 degree sampling interval
Az=linspace(-180,180-1/NAz,NAz);
lambda = LTE_params.speed_of_light/LTE_params.carrier_freq;
% spacing = 1;  %in lambda

switch LTE_params.BS_config.nTx
    case 2
        switch TX_type
            case 'linear'
                 pattern(1,:,1,:) = dipole(Az,0);
                 BsArrays = AntennaArray('ULA',2,spacing*lambda,'FP-ECS',pattern,'Azimuth',Az); %ULA-2 
            case 'cross'
                Position = [0 0 0;0 0 0];
                Rotation = zeros(2,3);
                pattern = zeros(2,2,1,length(Az));
                pattern(1,:,1,:) = dipole(Az,45);
                pattern(2,:,1,:) = dipole(Az,-45);
                BsArrays = AntennaArray('Pos',Position,'Rot',Rotation,'FP-ECS',pattern);
            otherwise
                error('Something wrong')
        end
              

    case 4
        switch TX_type
            case 'linear'
                pattern(1,:,1,:) = dipole(Az,0);
                BsArrays = AntennaArray('ULA',4,spacing*lambda,'FP-ECS',pattern,'Azimuth',Az); %ULA-4 
            case 'cross'
                Position = [-1/2*spacing*lambda 0 0;-1/2*spacing*lambda 0 0;1/2*spacing*lambda 0 0;1/2*spacing*lambda 0 0];
                Rotation = zeros(4,3);
                pattern = zeros(4,2,1,length(Az));
                pattern(1,:,1,:) = dipole(Az,45);
                pattern(2,:,1,:) = dipole(Az,-45);
                pattern(3,:,1,:) = dipole(Az,45);
                pattern(4,:,1,:) = dipole(Az,-45);
                BsArrays = AntennaArray('Pos',Position,'Rot',Rotation,'FP-ECS',pattern);
            otherwise
                error('Something wrong')
        end
        % double cross-dipole with 45/-45 poralized dipols with lambda/2 spacing
        %BsArrays(4)=AntennaArray('ULA',4,dist,'FP-ECS',pattern,'Azimuth',Az); %UCA-4 1cm spacing
        
    otherwise
        error('Invalid number ot transmit antennas');
end


%% User antennas
clear pattern Rotation
NAz=120; %3 degree sampling interval
Az=linspace(-180,180-1/NAz,NAz);
switch LTE_params.UE_config.nRX
    case 2
        switch RX_type
            case 'linear'
                pattern(1,:,1,:) = dipole(Az,0);
                UserArrays = AntennaArray('ULA',2,1/10*lambda,'FP-ECS',pattern,'Azimuth',Az); %ULA-2 lambda/10 spaced
            case 'cross'
                Position = [0 0 0;0 0 0];
                Rotation = [0 0 0;0 0 0];
                pattern = zeros(2,2,1,length(Az));
                pattern(1,:,1,:) = dipole(Az,45);
                pattern(2,:,1,:) = dipole(Az,-45);
                UserArrays = AntennaArray('Pos',Position,'Rot',Rotation,'FP-ECS',pattern,'Azimuth',Az);
            otherwise
                error('Something wrong')
        end
    otherwise
        error('Invalid number ot receive antennas');
end

Arrays = [UserArrays,BsArrays];