⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipei.m

📁 实现匹配滤波器的matlab仿真
💻 M
字号:
function y=pipei(x)
%构造发送信号波形
t1=0:100;
s01=-2+0*t1;s11=2+0*t1;
t2=100:200;
s02=2+0*t2;s12=-2+0*t2;
t3=200:1:400;
s03=0*t3;s13=0*t3;
t=[t1,t2,t3];
s0=[s01,s02,s03];
s1=[s11,s12,s13];
%匹配滤波器系统函数
h0=s1;
h1=s0;
%码元周期 
Tb=200;                        
for i=1:length(x)
    if(x(i)==1)
      for j=1: Tb
       d((i-1)* Tb+j)=1;
      end 
    else
     for j=1: Tb 
       d((i-1)* Tb+j)=0;
      end 
     end;
end;
%对发送二进制信号进行波形映射
k=1;
for g=1:length(x)
   if(x(g)==1)
      y=s1;
    else
     y=s0;
   end;
%叠加高斯白噪声,信噪比设为10dB 
ynr=awgn(y,10,'measured');
%产生输出信号
r0=ifft(fft(ynr,512).*fft(h0,512),512);
r1=ifft(fft(ynr,512).*fft(h1,512),512); 
tt=0:511;
figure(k);
subplot(211);
plot(t,y,'k',t,ynr,'g');
axis([0,400,-3,3]);
legend('发送波形','叠加高斯白噪声后波形');
subplot(212);
plot(tt,r0,'b',tt,r1,'r');
axis([0,400,-900,900]);
gtext('\leftarrow r0=conv(y,h0)');
gtext('\leftarrow r1=conv(y,h1)');
if r0(Tb)>r1(Tb)
    m(k)=0;
else m(k)=1;
end;
k=k+1;
end;

for i=1:length(m)
    if(m(i)==1)
      for j=1: Tb
       n((i-1)* Tb+j)=1;
      end 
    else
     for j=1: Tb 
       n((i-1)* Tb+j)=0;
      end 
     end;
end;

figure(k);
subplot(211);
plot(d);
axis([0,length(d),-0.2,1.2]);
title('发送的二进制信号');
subplot(212);
plot(n);
axis([0,length(n),-0.2,1.2]);
title('接收判定后的二进制信号');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -