?? find_e_h.m
字號:
%********************************************
%函數功能:求接收符號向量e和仿真信道矩陣h
%函數功能說明:接收從主程序得到的萊斯因子、信噪比和用戶數信息,
% 得接收符號向量e和仿真信道矩陣h
%*******************************************
function [h,e]=find_e_h(K,SNR,K_user)
%********************************************
%變量初始化
%********************************************
Lm=144;
P_dB=[0 -1 -9 -10 -15 -20];
Delay=[0,310,710,1090,1730,2510];
Delay=Delay*10^-9;
P_w=10.^(P_dB./10);
sigma2=1/SNR;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%讀取文件內容
fidin=fopen('mp0.txt'); % 打開文件
%while ~feof(fidin) % 判斷是否為文件末尾
mp0=fgets(fidin); %獲取文件內容,mp0 中存放
%**************************
%將路徑功率P_w歸一化
%************************
p=0;
for i=1:length(P_w)
p=p+P_w(i);
end
Pk=P_w/p;
%*********************************************************************
%定義沖激響應信號的帶寬B,窗長W’,將實際的路徑功率分化到1/B整數倍的時延點上
%*********************************************************************
B=1.28*10^6;
W=ceil(Delay(length(Delay))*B)+1;
Pn=zeros(1,W);
%n=0;
for i=1:length(Delay)
n=floor(Delay(i)*B);
Pn(n+1)=((n+1)-Delay(i)*B)*P_w(i)+Pn(n+1);
Pn(n+2)=(Delay(i)*B-n)*P_w(i)+Pn(n+2);
end
%*******************************************
%按照幅度服從萊斯分布,相角服從均勻分布,定義h
%*******************************************
h=zeros(K_user,W);
for k=1:K_user
s=Pn*K/(1+K);
sigma2=Pn/(1+K);
x=sqrt(sigma2/2).*randn(1,W)+sqrt(s/2);
y=sqrt(sigma2/2).*randn(1,W)+sqrt(s/2);
h_app=sqrt(x.*x+y.*y);
h_phase=2*pi*rand(1,W);
h(k,:)=h_app.*exp(-2*j*h_phase);
end
h=h';
%********************************************************************
%調用Midamble函數求出每個用戶的Midamble碼,將每個用戶的Midamble碼作為
%訓練序列,經過與各自信道的卷積,得出響應,并求和,由噪聲進一步得出接收信號
%********************************************************************
G=midamble(mp0,16,K_user);
e=zeros(Lm+W-1,1);
for k=1:K_user
e=e+conv(G(:,k),h(:,k));
end
%根據已知的信噪比,求出噪聲,再與上面得出的信號響應求和,
noise=sqrt(sigma2)*randn(W,Lm+W-1);
e=e+noise';
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -