⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init_fading.m

📁 mimo信道模型、信道容量、编码等多方面的MATLAB仿真。是个不错的学习mimo仿真的资料。
💻 M
字号:
function FadingMatrixTime = init_fading(FadingLength, ...
					FadingOversamplingFactor, ...
					NumberOfTxAntennas, ...
					NumberOfRxAntennas, ...
					NumberOfPaths, FadingType, sigma_rad, ...
                    angle_rad)

% FadingMatrixTime = init_fading(FadingLength,
% FadingOversamplingFactor, NumberOfTxAntennas, NumberOfRxAntennas,
% NumberOfPaths, FadingType, sigma_rad, angle_rad)
%
% Generates a matrix of fading coefficients of size
% (NumberofTxAntennas*NumberOfRxAntennas*NumberOfPaths) x
% FadingLength spanning FadingLength/FadingOversamplingFactor *
% wavelength/2*speed seconds with a sampling time of
% wavelength/(2*FadingOversamplingFactor*speed). The Doppler
% spectrum of the fading coefficients can be either classic,
% flat or "Laplacian".
%
% Inputs
%
% * Variable FadingLength, number of fading samples generated
%   per tap coefficient
% * Variable FadingOversamplingFactor, oversampling factor of
%   the fading process in the time domain, so as to achieve
%   a sampling time of wavelength/(2*FadingOversamplingFactor*speed).
% * Variable NumberOfTxAntennas, number of antenna elements
%   at Tx
% * Variable NumberOfRxAntennas, number of antenna elements
%   at Rx
% * Variable NumberOfPaths, number of taps of the PDP
% * Variable FadingType, type of the Doppler spectrum, which
%   can be classic, flat or "Laplacian"
% * Variable sigma_rad, standard deviation of the Laplacian
%   PAS in the case of a "Laplacian" Doppler spectrum
% * Variable angle_rad, AoA of the waves in the case of a
%   Laplacian PAS
%
% Output
%
% * 2-D matrix FadingMatrix Time of size
%   (NumberofTxAntennas*NumberOfRxAntennas*NumberOfPaths) x
%   FadingLength containing FadingLength samples of
%   NumberofTxAntennas * NumberOfRxAntennas * NumberOfPaths
%   independent fading processes exhibiting classic, flat or
%   "Laplacian" Doppler spectrum.
%
%
% STANDARD DISCLAIMER
%
% CSys is furnishing this item "as is". CSys does not provide any
% warranty of the item whatsoever, whether express, implied, or
% statutory, including, but not limited to, any warranty of
% merchantability or fitness for a particular purpose or any
% warranty that the contents of the item will be error-free.
%
% In no respect shall CSys incur any liability for any damages,
% including, but limited to, direct, indirect, special, or
% consequential damages arising out of, resulting from, or any way
% connected to the use of the item, whether or not based upon
% warranty, contract, tort, or otherwise; whether or not injury was
% sustained by persons or property or otherwise; and whether or not
% loss was sustained from, or arose out of, the results of, the
% item, or any services that may be provided by CSys.
%
% (c) Laurent Schumacher, AAU-TKN/IES/KOM/CPK/CSys - February 2002

CutOff = floor(FadingLength/(2*FadingOversamplingFactor))-1;
if strcmp(FadingType, 'laplacian') % Laplacian constrained PAS
    FadingMatrixFreq = [];
    for ii = 1:size(sigma_rad,2)
        tmp = sqrt(1/(pi*FadingLength))...
            ./sqrt((1+1e-9)...
            .*ones(size(-CutOff:1:CutOff))-((-CutOff:1:CutOff)./CutOff).^2)...
            .*(exp(-sqrt(2)/sigma_rad(ii).*abs(acos((-CutOff:1:CutOff)./CutOff)-angle_rad(ii)))...
               + exp(-sqrt(2)/sigma_rad(ii).*abs(acos((-CutOff:1:CutOff)./CutOff)+angle_rad(ii))));
           FadingMatrixFreq = [FadingMatrixFreq;
                               ones(NumberOfTxAntennas*NumberOfRxAntennas,1)...
                               *[tmp(CutOff+2:2*CutOff-1),...
                                 zeros(1,FadingLength-2*CutOff+3),...
                                 tmp(3:CutOff+1)]];
    end;
else
    if strcmp(FadingType, 'classic') % Classical Doppler spectrum
        tmp = sqrt(1/(pi*FadingLength))...
            ./sqrt((1+1e-9)...
            .*ones(size(1:1:CutOff))-((1:1:CutOff)./CutOff).^2);
    elseif strcmp(FadingType, 'flat') % Flat Doppler spectrum
        tmp = ones(size(1:1:CutOff));
    end;
    FadingMatrixFreq = ones(NumberOfTxAntennas...
        *NumberOfRxAntennas...
		*NumberOfPaths,1)...
        *[tmp(1:CutOff-1),...
          zeros(1,FadingLength-2*CutOff+3),...
          fliplr(tmp(2:CutOff-1))];
end;
% Addition of a random phase
FadingMatrixFreq = FadingMatrixFreq...
                   .*exp((2*pi*i).*rand(NumberOfTxAntennas...
					*NumberOfRxAntennas...
					*NumberOfPaths, ...
					FadingLength));
FadingMatrixTime = ifft(FadingMatrixFreq,FadingLength,2);
% Normalisation to 1
FadingMatrixTime = FadingMatrixTime./sqrt(mean(abs(FadingMatrixTime).^2,2)*...
				      ones(1,size(FadingMatrixTime,2)));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -