📄 channel.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 + -