?? dssignal.m
字號:
%發送和接收合在一塊的程序
%修改于2004/11/15
%發送BPSK信號
%適合于CM3和CM4信道,估計時每80ns平均一次
%======================發送信號部分===========================
clear;
clf;
%=======第一部分:基本參數========
SNR_db=5; %輸入信噪比
Dg=0.5; %高斯脈沖寬度
Ts=0.05; %信號采樣周期
Tf=80; %Tf=80,duty_cycle=1:160
Num_Tf=Tf/Ts; %每個符號持續時間內采樣點個數
Eb=Eb_halfcos(Ts,Dg); %一個脈沖周期內的碼元能量
%信道估計需要的訓練序列長度
N_monocycle=10;
A=ones(1,10);
%碼元同步需要的訓練序列
N_Syn=12;
%數據長度
N_Data=1000;
Sim_Data=randn(1,N_Data); %產生數據序列;
%---------------------------------------------
%========第二部分:生成基本波形==========
%產生占空比1:160的半余弦脈沖波形,脈沖波形的占空比可以通過Num_Tf調整
for n=0:Num_Tf-1
gt(n+1)=halfcos_generator(Dg,n*Ts);
end
%========第三部分:生成信道沖激響應及高斯白噪聲==========
Th=Dg; %信道沖激響應間隔
h0=UWB_SV_channel(2,4,Th); %信道沖激響應
h1=h0(:,2);
h=n_upsample(h1,Th,Ts);
%=============
Noise_sigma=0%sqrt(Eb/(1*Dg*10^(SNR_db/10))); %S/N=(Eb/T)/(N0*B) 高斯白噪聲
%============第四部分:信道估計過程==========================
%信道估計過程
st0=(A'*gt)';
st=reshape(st0,1,[]); %理想發送信號
figure(1);
subplot(2,1,1);
plot(0:Ts:(length(st)-1)*Ts,st);
title('理想發射信號');
xlabel('time(ns)');ylabel('amplitude');
rt0=conv(st,h);
rt_len=length(rt0); %通過信道后的信號
%subplot(4,1,3);
%plot([0:Ts:(rt_len-1)*Ts],rt0);
%------------------
rt=rt0 +Noise_sigma*randn(1,rt_len); %接收信號
subplot(2,1,2);
plot([0:Ts:(rt_len-1)*Ts],rt);
title('經過SV信道(CM4,信道沖激響應間隔0.5ns,SNR=5dB)');
xlabel('time(ns)');ylabel('amplitude');
[peak_h,t_h]=ch_est(rt,Ts,N_monocycle,gt,Tf,Dg,h);
[Tao,Atten]=selectpath(peak_h,t_h,4); %選擇比較大的多徑分量;N_path表示所需要的多徑數
%===================信道估計過程到此結束=====================
%==============第五部分:同步以及信號接收==============
B=[1,1,1,1,1,-1,-1,1,1,-1,1,-1,1];
Train_seq=B;
g=[1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1]; %卷積編碼生成矩陣
k0=1; %編碼器一次輸入個數
coded_Data=cnv_encd(g,k0,Sim_Data); %卷積編碼后的數據
pn_code=B;
%syn_training=spreadgren(randn(1,12),pn_code); %同步訓練序列
spread_Data=spreadgren(coded_Data,pn_code); %擴頻并且加上訓練序列(未擴頻的)后的數據
%trans_data=[syn_training,spread_Data];
Train_st0=(Train_seq'*gt)';
Train_st1=reshape(Train_st0,1,[]); %理想發送信號
Train_rt=conv(Train_st1,h);
Train_rtlen=length(Train_rt);
Train_rt=Train_rt+Noise_sigma*randn(1,Train_rtlen); %接收信號
figure(2);
subplot(3,1,1);
plot(0:Ts:(length(Train_st1)-1)*Ts,Train_st1);
title('理想發射信號');
xlabel('time(ns)');ylabel('amplitude');
subplot(3,1,2);
plot(0:Ts:(length(Train_rt)-1)*Ts,Train_rt);
gtext('經過SV信道的信號(CM4,信道沖激響應間隔0.5ns,無噪聲');
xlabel('time(ns)');ylabel('amplitude');
yt=MRC_combine(Tao,Atten,Train_rt,Tf,Ts,length(Train_seq)); %多徑合并過程,不進行相關積分
subplot(3,1,3);
plot(0:Ts:(length(yt)-1)*Ts,yt);
gtext('Rake接收機合并結果');
xlabel('time(ns)');ylabel('amplitude');
%肖婕楨和劉娜的程序從此開始=============
%=====================
%=====================
%=====================
%=====================
%=====================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -