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

    %频分复用系统的实现
%
%
%
%
%-----------------分割线----------------------------------------
clc;clear all;close all;
%原始信号的产生
%码元速率270Kbps
Fs=270*10^3;
x1=[0 1 1 0 1];
x2=[0 1 1 0 1];
x3=[0 1 1 0 1];
[y1 n1]=snrz(x1);
[y2 n2]=snrz(x2);  
[y3 n3]=snrz(x3);
t=0:5/Fs/n1:5/Fs-5/Fs/n1;
Y1=fft(y1);
% Y2=fft(y2);
% Y3=fft(y3);
figure();
plot(t,y1);

f=0:1/n1:0.5;
figure();
%hold on
subplot(3,1,1);plot(f,abs(Y1(1:n1/2+1)),'r');
%plot(abs(Y2(1:n1/2+1)),'g');
%plot(abs(Y3),'b');
%hold off
%-----------------分割线----------------------------------------
%低通滤波
LPF_Modb1=fir1(40,0.02);
LPF_Modh1=freqz(LPF_Modb1,1,256);
subplot(3,1,2);plot(linspace(0,1,256),abs(LPF_Modh1));
y1=filter(LPF_Modb1,1,y1);
y2=filter(LPF_Modb1,1,y2);
y3=filter(LPF_Modb1,1,y3);
Y1=fft(y1);
subplot(3,1,3);plot(f,abs(Y1(1:n1/2+1)),'r');

%-----------------分割线----------------------------------------
%数字带通调制
w0=0.2*10^6;%频率间隔
w1=900*10^6;
w2=w1+5*w0;
w3=w1+10*w0;
y1_2ask=Modulation_2ASK(y1,w1);
y2_2ask=Modulation_2ASK(y2,w2);
y3_2ask=Modulation_2ASK(y3,w3);

%-----------------分割线----------------------------------------
%数字带通滤波
BPF_Modb1=fir1(80,[0.23 0.25]);
BPF_Modh1=freqz(BPF_Modb1,1,256);
BPF_Modb2=fir1(80,[0.26 0.28]);
BPF_Modh2=freqz(BPF_Modb2,1,256);
BPF_Modb3=fir1(80,[0.32 0.35]);
BPF_Modh3=freqz(BPF_Modb3,1,256);
figure();
hold on
plot(linspace(0,1,256),abs(BPF_Modh1),'r');
plot(linspace(0,1,256),abs(BPF_Modh2),'g');
plot(linspace(0,1,256),abs(BPF_Modh3),'b');
hold off

y1=filter(BPF_Modb1,1,y1_2ask);
y2=filter(BPF_Modb2,1,y2_2ask);
y3=filter(BPF_Modb3,1,y3_2ask);


%-----------------分割线----------------------------------------
%频率波形
Y1_2ask=fft(y1_2ask);
Y2_2ask=fft(y2_2ask);
Y3_2ask=fft(y3_2ask);

figure();
subplot(3,1,1);
hold on
plot(f,abs(Y1_2ask(1:n1/2+1)),'r');
plot(f,abs(Y2_2ask(1:n2/2+1)),'g');
plot(f,abs(Y3_2ask(1:n3/2+1)),'b');
hold off

y=y1_2ask+y2_2ask+y3_2ask;
Y=fft(y);
subplot(3,1,2);
plot(f,abs(Y(1:n3/2+1)));
%-----------------分割线----------------------------------------
%信道模拟
y=y+0.2*randn(1,length(y));
Y=fft(y);
subplot(3,1,3);
plot(f,abs(Y(1:n3/2+1)));
%-----------------分割线----------------------------------------
%带通滤波
y_Demod1=filter(BPF_Modb1,1,y);
y_Demod2=filter(BPF_Modb2,1,y);
y_Demod3=filter(BPF_Modb3,1,y);

Y_Demod1=fft(y_Demod1);
Y_Demod2=fft(y_Demod2);
Y_Demod3=fft(y_Demod3);

figure();
hold on
plot(f,abs(Y_Demod1(1:n1/2+1)),'r');
plot(f,abs(Y_Demod2(1:n2/2+1)),'g');
plot(f,abs(Y_Demod3(1:n3/2+1)),'b');
hold off
%-----------------分割线----------------------------------------
%数字解调
y_Demod1=Demodulation_2ASK(y_Demod1,w0);

%-----------------分割线----------------------------------------
%低通
y_de1=filter(BPF_Modb1,1,y_Demod1);
figure();
plot(y_de1);
%恢复信号