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

📄 channel.asv

📁 TD-SCMDA的训练序列Midamble code的仿真
💻 ASV
字号:
K=8;%用户数
SNR=10;%信道信噪比
RPP=[0.0 -1.0 -9.0 -10.0 -15.0 -20.0];%case2 Relative Path Power(dB)
P0=10.^(RPP./10);%将能量由dB形式还原为正常形式
Pk=P0./(sum(P0));%将能量归一化
delay=[0 310 710 1090 1730 2510];%时延(ns)
delay=delay.*(1e-9);%将单位由ns还原为s
B=1.28e6;%TD-SCDMA 带宽;

%以下部分是为了将所有抽样点的能量分配到整数点上
ntotal=ceil(delay(end)*B)+1;%根据最后一个抽样点的时延确定需要几个整数点
n=floor(delay*B);%获得抽样点的前一个整数,比如1.3取1;1.9也取1.
pn=zeros(length(Pk),ntotal);%预设一个矩阵,每一行为一个抽样点的能量分配情况,每一列为一个整数点的能量
for i=1:length(Pk)%对每一个抽样点进行能量分配,按比例分给该抽样点的临近的两个整数点上
    pn(i,n(i)+1)=((n(i)+1)-delay(i)*B)*Pk(i);%抽样点的前一个整数点
    pn(i,n(i)+2)=(delay(i)*B-n(i))*Pk(i);%抽样点的后一个整数点
end
pn=sum(pn,1);%将分配结果累加起来,最终的到ntotal个整数点上的能量

ck=zeros(K,ntotal);%预设一个矩阵,每一行代表一个用户,每一列代表一个用于信道估计的整数点
[G W stringcom]=midamble(K);%获得G矩阵和midamble码
for i=1:ntotal
 ck(:,i)=random('Normal',0,pn(i)/2,K,1)+j*random('Normal',0,pn(i)/2,K,1); %对每个用户产生一个信道估计值  
end
e=[];
for i=1:K
    e=[e;conv(G(i,:),ck(i,:))];%
end
e=sum(e,1);
%产生高斯噪声
sigma=1/(10^(0.1*SNR));
noise=random('Normal',0,sigma/2,1,length(e))+j*random('Normal',0,sigma/2,1,length(e));
%信道估计不引入噪声
h_idea=ifft(fft(e(W+1:W+128))./fft(stringcom));
%信道估计引入噪声
e1=e+noise;
h_noise=ifft(fft(e1(W+1:W+128))./fft(stringcom));
%原始信道系数
h=[ck(1,:) zeros(1,W-size(ck,2))];

figure;
subplot(2,2,1)
stem(real(h(1:W)));    %实部
title('原始信道系数实部');
grid on
subplot(2,2,2)
stem(imag(h(1:W)));    %虚部
title('原始信道系数虚部');
grid on
subplot(2,2,3)
stem(real(h_idea(1:W)));  %实部
title('不加噪声情况下信道系数实部');
grid on
subplot(2,2,4)
stem(imag(h_idea(1:W)));  %虚部
title('不加噪声情况下信道系数虚部');
grid on

figure;
subplot(2,2,1)
stem(real(h(1:W)));    %实部
title('原始信道系数实部');
grid on
subplot(2,2,2)
stem(imag(h(1:W)));    %虚部
title('原始信道系数虚部');
grid on
subplot(2,2,3)
stem(real(h_noise(1:W)));  %实部
title('加噪声情况下信道系数实部');
grid on
subplot(2,2,4)
stem(imag(h_noise(1:W)));  %虚部
title('加噪声情况下信道系数虚部');
grid on

⌨️ 快捷键说明

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