
瑞利衰落信道模型的研究与仿真 matlab程序
毕业设计要做的。急!!!要仿真源代码!!!!!!谢qq646883565.我真的没办法了快没时间了、急!!运行有错啊...
毕业设计要做的。急!!!要仿真源代码!!!!!!谢
qq646883565 .我真的没办法了
快没时间了、急!!
运行有错啊 展开
qq646883565 .我真的没办法了
快没时间了、急!!
运行有错啊 展开
1个回答
展开全部
% written by Amir Sarrafzadeh (14Jan2008)
% this function generates normalized rayleigh samples based on Inverse DFT
% method as was proposed by David J. Young, and Norman C. Beaulieu
% "The Generation of Correlated Rayleigh Random Variates by Inverse
% Discrete Fourier Transform, "
% Sample Use:
% chan=genRayleighFading(512,ceil(10000/512),1e4,100);
% chan=chan(1:10000);
% where 10000=number of needed samples
% parameters:
% fftsize: size of fft which used
% numBlocks: number of samples/fftsize
% fs: sampling frequency(Hz)
% fd: doppler shift(Hz)
function [ outSignal ] = genRayleighFading( fftSize,numBlocks,fs,fd )
numSamples=fftSize*numBlocks; %total number of samples
fM=fd/fs; %normalized doppler shift
NfM=fftSize*fM;
kM=floor(NfM); %maximum freq of doppler filter in FFT samples
doppFilter=[0,1./sqrt(2*sqrt(1-(((1:kM-1)./NfM).^2))),sqrt((kM/2)*((pi/2)-atan((kM-1)/sqrt(2*kM-1)))),...
zeros(1,fftSize-2*kM-1),sqrt((kM/2)*((pi/2)-atan((kM-1)/sqrt(2*kM-1)))),1./sqrt(2*sqrt(1-(((kM-1:-1:1)./NfM).^2)))].';
sigmaG=sqrt((2*2/(fftSize.^2))*sum(doppFilter.^2));
gSamplesI=randn(numSamples,2); %i.i.d gaussian input samples (in phase)
gSamplesQ=randn(numSamples,2); %i.i.d gaussian input samples (quadrature phase)
gSamplesI=(1/sigmaG)*(gSamplesI(:,1)+1j*gSamplesI(:,2));
gSamplesQ=(1/sigmaG)*(gSamplesQ(:,1)+1j*gSamplesQ(:,2));
%filtering
filterSamples=kron(ones(numBlocks,1),doppFilter);
gSamplesI=gSamplesI.*filterSamples;
gSamplesQ=gSamplesQ.*filterSamples;
freqSignal=gSamplesI-1j*gSamplesQ;
freqSignal=reshape(freqSignal,fftSize,numBlocks);
outSignal=ifft(freqSignal,fftSize);
outSignal=abs(outSignal(:)); %Rayleigh distributed signal
% this function generates normalized rayleigh samples based on Inverse DFT
% method as was proposed by David J. Young, and Norman C. Beaulieu
% "The Generation of Correlated Rayleigh Random Variates by Inverse
% Discrete Fourier Transform, "
% Sample Use:
% chan=genRayleighFading(512,ceil(10000/512),1e4,100);
% chan=chan(1:10000);
% where 10000=number of needed samples
% parameters:
% fftsize: size of fft which used
% numBlocks: number of samples/fftsize
% fs: sampling frequency(Hz)
% fd: doppler shift(Hz)
function [ outSignal ] = genRayleighFading( fftSize,numBlocks,fs,fd )
numSamples=fftSize*numBlocks; %total number of samples
fM=fd/fs; %normalized doppler shift
NfM=fftSize*fM;
kM=floor(NfM); %maximum freq of doppler filter in FFT samples
doppFilter=[0,1./sqrt(2*sqrt(1-(((1:kM-1)./NfM).^2))),sqrt((kM/2)*((pi/2)-atan((kM-1)/sqrt(2*kM-1)))),...
zeros(1,fftSize-2*kM-1),sqrt((kM/2)*((pi/2)-atan((kM-1)/sqrt(2*kM-1)))),1./sqrt(2*sqrt(1-(((kM-1:-1:1)./NfM).^2)))].';
sigmaG=sqrt((2*2/(fftSize.^2))*sum(doppFilter.^2));
gSamplesI=randn(numSamples,2); %i.i.d gaussian input samples (in phase)
gSamplesQ=randn(numSamples,2); %i.i.d gaussian input samples (quadrature phase)
gSamplesI=(1/sigmaG)*(gSamplesI(:,1)+1j*gSamplesI(:,2));
gSamplesQ=(1/sigmaG)*(gSamplesQ(:,1)+1j*gSamplesQ(:,2));
%filtering
filterSamples=kron(ones(numBlocks,1),doppFilter);
gSamplesI=gSamplesI.*filterSamples;
gSamplesQ=gSamplesQ.*filterSamples;
freqSignal=gSamplesI-1j*gSamplesQ;
freqSignal=reshape(freqSignal,fftSize,numBlocks);
outSignal=ifft(freqSignal,fftSize);
outSignal=abs(outSignal(:)); %Rayleigh distributed signal
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询