gusucode.com > matlab编程一个频分复用系统的模拟源码程序 > matlab编程一个频分复用系统的模拟源码程序/code/DSP_test/text_2FSK.m

    %2FSK调制与解调测试程序
clc;clear all;close all;
n0=1024;
x=[0 1 0];
x=snrz(x,n0);
Fs=270000;
Ts=1/Fs;
t=-Ts:Ts/n0:2*Ts-Ts/n0;
n=length(x);
figure(1);plot(t,x);
axis([-Ts 2*Ts -0.5 1.5]);
f1=30000;
w1=2*pi*30000-2*pi*4200;
w2=2*pi*30000+2*pi*4200;

f1p_mod_LPF=3000;f1s_mod_LPF=3500;
rp=3;rs=30;
w1p_mod_LPF=2*f1p_mod_LPF/Fs;w1s_mod_LPF=2*f1s_mod_LPF/Fs;
LPF_Modb1=fir1(80,w1s_mod_LPF);
LPF_Moda1=1;
[LPF_Modh1 fw]=freqz(LPF_Modb1,LPF_Moda1,256);
y_2fsk=filter(LPF_Modb1,LPF_Moda1,x);
Y_2fsk=fft(y_2fsk);
figure();plot(abs(Y_2fsk));

for i=1:n
    if x(i)==1
        y_2fsk(i)=cos(w1*i/Fs);
    else
        y_2fsk(i)=cos(w2*i/Fs);
    end
end

%figure(2);plot(t,y_2fsk);

Y_2fsk=fft(y_2fsk);
figure();plot(abs(Y_2fsk));


y=y_2fsk;

N=80;

f1_Dem_BPFp=[f1-3000 f1+3000];
f1_Dem_BPFs=[f1-3500 f1+3500];
w1_Dem_BPFp=2*f1_Dem_BPFp/Fs;
w1_Dem_BPFs=2*f1_Dem_BPFs/Fs;
BPF_Demb11=fir1(N,w1_Dem_BPFs-2*pi*2300/Fs);
BPF_Demb12=fir1(N,w1_Dem_BPFs+2*pi*2300/Fs);
BPF_Dema11=1;BPF_Dema12=1;
[BPF_Demh11 fw]=freqz(BPF_Demb11,BPF_Dema11,256);
[BPF_Demh12 fw]=freqz(BPF_Demb12,BPF_Dema12,256);
fw=fw./pi;
figure();
hold on
plot(fw,abs(BPF_Demh11),'r');
plot(fw,abs(BPF_Demh12),'g');
hold off
y11_Dem_BPF=filter(BPF_Demb11,BPF_Dema11,y);
y12_Dem_BPF=filter(BPF_Demb12,BPF_Dema12,y);
y11_Dem_BPF=y11_Dem_BPF+y12_Dem_BPF;
Y11_Dem_BPF=fft(y11_Dem_BPF);
figure();plot(abs(Y11_Dem_BPF));

dt=1/Fs;
%微分器
for i=1:n-1
    y1(i)=(y11_Dem_BPF(i+1)-y11_Dem_BPF(i))/dt;
end

%包络检波
y1=abs(hilbert(y1));
zero1=(max(y1)-min(y1))/2;
y1=y1-zero1;
y1(1,n)=0;


f1p_Dem_LPF=2900;f1s_Dem_LPF=3100;
w1p_Dem_LPF=2*f1p_Dem_LPF/Fs;w1s_Dem_LPF=2*f1s_Dem_LPF/Fs;
LPF_Demb1=fir1(N,w1s_Dem_LPF);
LPF_Dema1=1;
[LPF_Demh1 fw]=freqz(LPF_Demb1,LPF_Dema1,256);

y1_LPF=filter(LPF_Demb1,LPF_Dema1,y1);
figure();plot(y1_LPF);