?? ch_est.m
字號:
%發(fā)送和接收合在一塊的程序
%修改于2004/11/10
%==========output parameters=============
%peak_h 估計(jì)的多徑分量的幅度
%t_h 多徑分量對應(yīng)的延時(shí)值——相對值,以接收到的信號的起始點(diǎn)為零點(diǎn)
%==========input parameters==============
%rt 接收到的信號,由訓(xùn)練序列和噪聲以及多經(jīng)組成,訓(xùn)練序列全是1
%Ts 采樣周期,和發(fā)送信號采樣周期相同
%N_monocycle 訓(xùn)練序列的符號個(gè)數(shù)
%gt 本地相關(guān)信號,采樣周期為Ts,單周期脈沖(一個(gè)周期內(nèi)的波形),脈沖形狀可以自由選擇,和發(fā)射信號脈沖波形相同
%Tf 脈沖周期=脈沖持續(xù)時(shí)間+空閑時(shí)間
%Dg 脈沖持續(xù)時(shí)間
%-----------------------------------------------
function [peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h)
%================接收端估計(jì)過程======================
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; %卷積相當(dāng)于能量積分,因此乘以抽樣間隔
% subplot(3,1,2);
% plot(nft*Ts,ft/Eb); %和參考波形卷積的波形
nft_len=length(nft);
K0=find(nft==0);
ft_len=nft(nft_len); %ft正系數(shù)部分的實(shí)際長度
%=============
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的序號從負(fù)數(shù)開始,所以要找到序號為1所對應(yīng)的實(shí)際序號K0
end
end
Zk(j,:)=Zj; %在tao處抽樣的結(jié)果,得到N-1個(gè)向量
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內(nèi)的偽峰值
[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截取信道沖激響應(yīng)前80ns內(nèi)的值畫圖
stem(t,h_comp,'*');grid;
legend('Estimated paths','Actual paths');
hold off;
title('信道估計(jì)結(jié)果和實(shí)際信道沖激響應(yīng)');
xlabel('time(ns)');ylabel('amplitude');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -