test8 final.docx
- 文档编号:10983374
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:18
- 大小:68.04KB
test8 final.docx
《test8 final.docx》由会员分享,可在线阅读,更多相关《test8 final.docx(18页珍藏版)》请在冰豆网上搜索。
test8final
clear;
clc;
closeall;
%dt=0.1;
df=0.1;
A=1;%载波振幅
fc=2;%载波频率(Hz)
snr=25;%信噪比dB
T=1;
N_sample=8;%基带信号中每个码元的的采样点
fs=fc*N_sample%系统采样频率,即考虑载波后,一个码元内的采样点数
ts=T/fs;
%fs1=1/dt;
t0=0:
ts:
3;
xt=[ones(1,1/ts),-2*ones(1,1/ts),zeros(1,1/ts+1)];
[Xt,xt,df1,f]=T2F(xt,ts,df,fs);
%fs2=10;
%sdt=1/fs2;
%t1=0:
sdt:
3;
st=[ones(1,1/ts),-2*ones(1,1/ts),zeros(1,1/ts+1)];
[St,st,df2,f1]=T2F(st,ts,df,fs);
figure
(1);
subplot(321);
plot(t0,xt(1:
length(t0)));
title('原始信号');
axis([03-33]);
subplot(322);
plot(f,fftshift(abs(Xt)));
title('原始信号频谱');
subplot(323);
plot(t0,st(1:
length(t0)));
title('抽样信号');
axis([03-33]);
subplot(324);
plot(f1,fftshift(abs(St)));
title('抽样信号频谱');
%N=(3/sdt)*8;%二进制序列的长度
x=st/max(abs(st))*2048;
dsource=pcm_encode(x);%生成N码元的0、1序列
out=2*dsource-1;
T=1;%每码元周期
t2=0:
ts:
length(out)-ts;
y=[];
fork=1:
length(out)
y=[yones(1,1/ts)*out(k)];
end
figure
(2);
subplot(311);
plot(t2,y);
title('编码信号');
axis([0384min(y)-0.1,max(y)+0.1]);
B=1/T;
f_start=fc-B;
f_cutoff=fc+B;
fs=fc*N_sample%系统采样频率,即考虑载波后,一个码元内的采样点数
ts=T/fs;%系统采样间隔
N=length(dsource);
t=0:
ts:
N*T-ts;
Lt=length(t);
subplot(312);
[yf,y,df1,f2]=T2F(y,ts,df,fs);%求出双极性NRZ信号频谱
plot(f2,fftshift(abs(yf)));%画出双极性NRZ信号频谱
xlabel('f2');
ylabel('双极性信号频谱');
ht=A*sin(2*pi*fc*t);
s_2psk=y.*ht;%生成2PSK信号
%pause%画出已调信号2PSK及其功率谱
figure(3)
subplot(311)
plot(t,s_2psk);%画出2PSK波形
axis([-0.1,10,min(s_2psk)-0.1,max(s_2psk)+0.1]);
xlabel('t');
ylabel('2PSK');
subplot(312)
[s_2pskf,s_2psk,df2,f3]=T2F(s_2psk,ts,df1,fs);%求2PSK信号频谱
plot(f2,fftshift(abs(s_2pskf)));%画出2PSK信号频谱
xlabel('f3');
ylabel('2PSK信号频谱');
%-----------将2PSK信号送入信道进行传输,先生成信道加性高斯白噪声噪声
snr_lin=10^(snr/10);%换算成倍数
signal_energy=0.5*A^2*T;%求出接收信号平均能量
noise_power=(signal_energy*fs)/(snr_lin*4);%求出噪声方差(噪声均值为0)
noise_std=sqrt(noise_power);%求出噪声均方差
Lt=length(t);
noise=noise_std.*randn(1,Lt);%以噪声均方差作为幅度产生高斯白噪声
%----------------将已调信号送入信道
%pause%画出信道中的高斯白噪声及其功率谱
figure(4)
subplot(221)
plot(t,noise(1:
Lt));%画出噪声
xlabel('t');
ylabel('信道噪声');
axis([-0.1,10,min(noise)-0.1,max(noise)+0.1]);
[noisef,noise,df1,f4]=T2F(noise,ts,df,fs);%求信道噪声频谱
subplot(222)
plot(f4,fftshift(abs(noisef)));%画出信道噪声频谱
xlabel('f4');
ylabel('信道噪声频谱');
r=s_2psk(1:
Lt)+noise(1:
Lt);%叠加了噪声的已调信号,相当于将已调信号送入理想信道
%pause%画出加噪后的已调信号2PSK及其功率谱
subplot(223)
plot(t,r);%画出加噪后的已调信号2PSK
xlabel('t');
ylabel('加噪2PSK信号');
axis([-0.1,10,min(r)-0.1,max(r)+0.1]);
[rf,r,df1,f5]=T2F(r,ts,df,fs);%求加噪后的已调信号2PSK频谱
subplot(224)%画出加噪后已调信号的功率谱
plot(f5,fftshift(abs(rf)));%画出已调信号2PSK频谱
xlabel('f5');
ylabel('加噪2PSK信号频谱');
%-----在接收端准备进行解调,先通过带通滤波器
%画出带通滤波器
[H,f6]=bp_f(length(rf),f_start,f_cutoff,df1,fs,1);%经过理想带通滤波器
figure(5)
subplot(322)
plot(f6,abs(fftshift(H)));%画出理想带通滤波器
axis([-fc-3*Bfc+3*B-0.21.2]);
xlabel('f6');
ylabel('理想BPF');
DEM=H.*rf;%滤波器输出的频谱
[dem]=F2T(DEM,fs);%滤波器的输出波形
dem1=dem(1:
Lt);
%经过理想带通滤波器后的信号波形及频谱
subplot(323)%经过理想带通滤波器后的信号波形
plot(t,dem1);%画出经过理想带通滤波器后的信号波形
axis([010-44]);
xlabel('t');
ylabel('理想BPF输出信号');
[demf1,dem1,df1,f7]=T2F(dem1,ts,df,fs);%求经过理想带通滤波器后信号频谱
subplot(324)
plot(f7,abs(fftshift(demf1)));%画出经过理想带通滤波器后信号频谱
xlabel('f7');
ylabel('理想BPF输出信号频谱');
%-----进行相干解调,先和本地载波相乘,即混频
subplot(325);%画出同频同相的本地载波
plot(t,ht);
axis([010-1.21.2]);
xlabel('t');
ylabel('本地载波');
subplot(326)%本地载波频谱
[htf,ht,df1,f8]=T2F(ht,ts,df,fs);
plot(f8,fftshift(abs(htf)));%画出载波频谱
axis([-fc-3*Bfc+3*B015]);
xlabel('f8');
ylabel('本地载波频谱');
%画出混频后的信号及频谱
figure(6)
der=dem1(1:
Lt).*ht(1:
Lt);%和本地载波相乘,即混频
subplot(221)%画出混频后的波形
plot(t,der);
axis([010-22]);
xlabel('t');
ylabel('混频后的信号');
[derf,der,df1,f9]=T2F(der,ts,df,fs);%求混频后信号的频谱
subplot(222)
plot(f9,abs(fftshift(derf)));%画出混频后的频谱
xlabel('f9');
ylabel('混频后信号的频谱');
%---------------再经过低通滤波器
%画出理想低通滤波器
[LPF,f10]=lp_f(length(derf),B,df1,fs,1);%求低通滤波器
subplot(224)%画出理想低通滤波器
plot(f10,fftshift(abs(LPF)));
axis([-fc-3*Bfc+3*B-0.21.2]);
xlabel('f10');
ylabel('理想LPF');
%混频信号经理想低通滤波器后的波形及频谱
DM=LPF.*derf;%理想低通滤波器输出信号频谱
[dm]=F2T(DM,fs);%理想低通滤波器的输出波形
figure(7)
subplot(321)
plot(t,dm(1:
Lt));%画出经过低通滤波器后的解调出的波形
axis([010-1.21.2]);
xlabel('t');
ylabel('LPF输出信号');
subplot(322)
[dmf,j,df1,f11]=T2F(dm,ts,df,fs);%求LPF输出信号的功率谱
plot(f11,abs(fftshift(dmf)));%画出LPF输出信号的频谱
xlabel('f11');
ylabel('LPF输出信号频谱');
%-------最后对LPF输出信号抽样判决
%N=length(dsource);
%t2=0:
ts:
N*T-ts;
%Lt1=length(t2);
dm=dm(1:
Lt);
panjue=zeros(1,N);%建立存储判决值的矩阵
%抽样判决,规则:
大于等于0判1,小于0判-1
fori=1:
N;
ifdm(fc*N_sample*(i-1)+fc*N_sample/2+1)>=0;%抽样判决时刻
panjue(i)=1;
else
panjue(i)=-1;
end
end
%----画出判决出的基带信号波形,并和调制信号比较
rr=sigexpand(panjue,fc*N_sample);
rrt=ones(1,fc*N_sample);%NRZ波形
huifu_NRZ=conv(rr,rrt);
%观察2PSK调制信号和解调信号波形
figure(8)
subplot(311)
plot(t,y(1:
Lt));%调制信号波形
axis([0384-1.21.2]);
xlabel('t');
ylabel('调制信号');
subplot(312)
%t4=1:
T:
N-T;
%final=[]
%fori=1:
N
%final(i)=huifu_NRZ(i*16)
%end
plot(t,huifu_NRZ(1:
Lt));%解调信号波形
axis([0384-1.21.2]);
xlabel('t');
ylabel('解调信号');
figure(9);
final=[]
fori=1:
N
final(i)=huifu_NRZ(i*16);
end
final1=(final+1)/2;
huifu=final1;
out2=pcm_decode(huifu,2);
out3=out2(1:
48);
t1=0:
3/(length(out3)-1):
3;
subplot(211);
plot(t1,out3);
title('译码结果');
dt=0.01;
fs=10;
sdt=1/fs;
t2=-0.1:
dt:
0.1;
gt=sinc(fs*t2);
stt=sigexpand(out3,sdt/dt);
out4=conv(stt,gt);
subplot(212);
t3=0:
3/(length(out4)-1):
3;
plot(t3,out4);
axis([03-2.22.2]);
title('通过LPF后的恢复信号');
%-------------------统计误码数
numoferr=sum(abs(panjue-dsource)/2)/N%计算出错误码元数
SNRindB1=-5:
1:
12;%信噪比取值向量,dB为单位
SNRindB2=-5:
0.2:
12;%信噪比取值向量,dB为单位
d=panjue;
figure(10);
simu_err_prb=zeros(1,length(SNRindB1));
%理论误码率
fori=1:
length(SNRindB2)
%计算信噪比值
SNR=10^(SNRindB2(i)/10);
%计算普通接收机的理论误码率。
theo_err_prb(i)=0.5*erfc(sqrt(SNR));%一般蒙特卡洛仿真是针对最佳接收机的,对于来自同一信道的接收信号,信道高斯噪声的功率谱密度是不变的,最佳接收机性能之所以比一般接收机好,是由于其输入信噪比是一般接收机的2倍(一般接收机带通滤波器带宽按2/Ts计算);故信道高斯白噪声的单边带功率谱密度即可按最佳接收机设计,也可按普通接收机设计。
%互补误差函数
theo_err_prb1(i)=0.5*erfc(sqrt(2*SNR));%最佳接收机理论误码率曲线
end
%计算普通接收机实际误码率
fori=1:
length(SNRindB1)
[numoferr,panjue,desingal,t]=bpskberr(A,fc,SNRindB1(i),N_sample,N,T,d,df);
simu_err_prb(i)=numoferr;
end
%误码率曲线图:
估计值和理论值曲线对比图
semilogy(SNRindB2,theo_err_prb,SNRindB1,simu_err_prb,'o',SNRindB2,theo_err_prb1,'*');
axis([-5120.000000011]);
xlabel('SNRindB');
ylabel('PrbofErr');
legend('普通接收机理论误码率','普通接收机实际误码率','最佳接收机理论误码率');
子程序:
function[numoferr,panjue,desingal,t]=bpskberr(A,fc,snr,N_sample,N,Ts,d,df)
%求误码率
%-------------------系统仿真参数
%A;%载波振幅
%fc;%载波频率(Hz)
%snr;%解调器输入信噪比dB
%N_sample;%每个码元的的采样点数
%N;%码元数
%Ts;%码元宽度
%d;输入二进制代码
%df:
频率分辨率
%-------------------输出(返回)参数
%numoferr;%误码率
%panjue恢复的二进制代码1用1表示,0用-1表示
%desingal;%恢复的数字基带信号
%t;时域采样时序
%----------------------生成调制信号
B=1/Ts;
f_start=fc-B;
f_cutoff=fc+B;
fs=fc*N_sample;%系统采样频率
ts=Ts/fs;%系统采样间隔
t=0:
ts:
N*Ts-ts;
Lt=length(t);
%产生二进制信源
dd=sigexpand((d+1)/2,fc*N_sample);
gt=ones(1,fc*N_sample);%NRZ波形
d_NRZ=conv(dd,gt);
d_sjx=2*d_NRZ-1;%生成双极性NRZ信号
%----对数字基带信号进行2PSK调制
ht=A*sin(2*pi*fc*t);%载波
s_2psk=d_sjx(1:
Lt).*ht;%生成2PSK信号
%----------------生成高斯白噪声噪声
snr_lin=10^(snr/10);%换算成倍数
signal_energy=0.5*A^2*Ts;%求出接收信号平均能量
noise_power=(signal_energy*fs)/(snr_lin*4);%求出噪声方差(噪声均值为0)
noise_std=sqrt(noise_power);%求出噪声均方差
noise=noise_std.*randn(1,Lt);%以噪声均方差作为幅度产生高斯白噪声
%---------------将已调信号送入信道
r=s_2psk(1:
Lt)+noise(1:
Lt);%叠加了噪声的已调信号,相当于将已调信号送入理想信道
[rf,r,df1,f]=T2F(r,ts,df,fs);
%-----------在接收端先通过带通滤波器
[H,f]=bp_f(length(rf),f_start,f_cutoff,df1,fs,1);
DEM=H.*rf;%滤波器输出的功率谱
[dem]=F2T(DEM,fs);%滤波器的输出信号波形
%进行相干解调,先和本地载波相乘,即混频
%和本地载波相乘
der=dem(1:
Lt).*ht;%混频
[derf,der,df1,f]=T2F(der,ts,df,fs);%求混频后信号的功率谱
%-----------------再经过低通滤波器
[LPF,f]=lp_f(length(derf),B,df1,fs,1);
DM=LPF.*derf;%理想低通滤波器输出的功率谱
[dm]=F2T(DM,fs);%理想低通滤波器的输出信号
%-----------最后对LPF输出信号抽样判决
panjue=zeros(1,N);%建立存储判决值的矩阵
%抽样判决,规则:
大于等于0判1,小于0判-1
fori=1:
N
ifdm(fc*N_sample*(i-1)+fc*N_sample/2+1)>=0;%抽样判决时刻
panjue(i)=1;
else
panjue(i)=-1;
end
end
%----------生成判决出的基带信号波形
dd1=sigexpand(panjue,fc*N_sample);
gt1=ones(1,fc*N_sample);%NRZ波形
desinga=conv(dd1,gt1);
desingal=desinga(1:
Lt);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- test8 final
![提示](https://static.bdocx.com/images/bang_tan.gif)