?? ch_est.m
字號:
%發送和接收合在一塊的程序
%修改于2004/11/10
%==========output parameters=============
%peak_h 估計的多徑分量的幅度
%t_h 多徑分量對應的延時值——相對值,以接收到的信號的起始點為零點
%==========input parameters==============
%rt 接收到的信號,由訓練序列和噪聲以及多經組成,訓練序列全是1
%Ts 采樣周期,和發送信號采樣周期相同
%N_monocycle 訓練序列的符號個數
%gt 本地相關信號,采樣周期為Ts,單周期脈沖(一個周期內的波形),脈沖形狀可以自由選擇,和發射信號脈沖波形相同
%Tf 脈沖周期=脈沖持續時間+空閑時間
%Dg 脈沖持續時間
%-----------------------------------------------
function [peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h)
%================接收端估計過程======================
Num_Tf=Tf/Ts;
rt_len=length(rt);
nrt=[1:rt_len];
Eb=Eb_halfcos(Ts,Dg);
% figure(10);
% subplot(3,1,1); %接收信號波形
% plot([0:Ts:(rt_len-1)*Ts],rt);
ngt=[1:length(gt)];
[gt1,ngt1]=sigfold(gt,ngt);
[ft0,nft]=conv_m(rt,nrt,gt1,ngt1);
ft=ft0*Ts; %卷積相當于能量積分,因此乘以抽樣間隔
% subplot(3,1,2);
% plot(nft*Ts,ft/Eb); %和參考波形卷積的波形
nft_len=length(nft);
K0=find(nft==0);
ft_len=nft(nft_len); %ft正系數部分的實際長度
%=============
for j=1:N_monocycle %考慮信道存在碼間干擾,故每80ns截取并疊加一次
for n=0:Num_Tf-1
TL=n*Ts;
N0=((j-1)*Tf+TL)/Ts;
N=round(N0);
if ((j==1)&(N<0))|((j==N_monocycle)&(N>=ft_len))
Zj(n+1)=0;
else
Zj(n+1)=ft(N+K0); %由于ft的序號從負數開始,所以要找到序號為1所對應的實際序號K0
end
end
Zk(j,:)=Zj; %在tao處抽樣的結果,得到N-1個向量
end
Zk0=sum(Zk)/(Eb*N_monocycle); % Zk(tao,ak)
%==================================================
n=[0:(length(Zk0)-1)];
t=n*Ts;
% subplot(3,1,3);
% plot(t,Zk0);
%eval_h=[zeros(1,20/Ts-1),Zk0(20/Ts:1:length(Zk0))]; %CM3和CM4信道條件使用這些語句,目的是消除前20ns內的偽峰值
[peak_h,index_h]=findpeak(Zk0);
t_h=(index_h-1)*Ts;
%[peak_h,t_h]=searchpeak(eval_h,Th,Ts);
figure(11);
t=[0:Ts:Tf-Ts];
plot(t,Zk0,'r');
hold on;
h_comp=h(1:Tf/Ts); %CM3和CM4截取信道沖激響應前80ns內的值畫圖
stem(t,h_comp,'*');grid;
legend('Estimated paths','Actual paths');
hold off;
title('信道估計結果和實際信道沖激響應');
xlabel('time(ns)');ylabel('amplitude');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -