MATLAB仿真实验
在MATLAB 中编写程序,产生一个 DSB 信号(具体参数根据自己制定的实验方案设置),绘制信号的时域波形图和频谱结构波形图,并对 DSB 信号的数据统计特性进行分析。
该部分不仅完成了DSB调制,同时在此基础上成功完成了DSB解调。
流程图如下:

图1 DSB调制与解调流程图
代码详见DSB.m文件中。
clc
clear
close all;
%-------------------------设置信号参数------------------------
fs=30.72e3; % 采样频率
F=1000; % 频率
Fc=4000; % 载波频率
N=30720; % 采样个数,N变大,时间长度变长
dt=1/fs; % 时间间隔,fs变大,时间间隔变短,曲线变光滑
t=0:dt:(N-1)*dt; % 时间向量,fs变大,时间长度变短
%------------------------------------------------------------
%---------------------产生输入信号x--------------------------
% x(t)时域
n=wgn(1,N,0)/5; % 产生高斯白噪声
x=cos(2*pi*F*t)+n; % 获取x(t)的采样点
figure; % x(t)为加噪后的有用信号
subplot(221)
plot(t,x);
axis([2e-2 4e-2 -2 2]);
xlabel('时间(t)');
ylabel('幅值(V)');
title('x(t)时域');
%------------------------------------------------------------
%-------------------------x信号的分析------------------------
disp('x(t)的均值为');
En=mean(x); % 求x(t)均值
disp(En);
disp('x(t)的方差为');
Dn=var(x); % 求x(t)方差
disp(Dn);
freq=fft(x,N); % 做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; % 双边
subplot(222);
plot(w,freq_d);
%axis([-1500 1500 0 30000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('x(t)幅频特性');
[c,lags]=xcorr(x,'unbiased'); % 求出自相关函数
subplot(224);
plot(lags/fs,c); % 在时域内画自相关函数
axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('x(t)的自相关函数');
% x(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); % 画功率谱密度
%axis([0 6.3e5 -50 50]);
xlabel('w');
ylabel('Sn(w)');
title('x(t)的功率谱密度');
%------------------------------------------------------------
%--------------------------带通滤波器------------------------
[bp,ap]=butter(5,[800*2/fs,2000*2/fs]);
[hp,wp]=freqz(bp,ap);
figure;
plot(wp/pi*fs/2,abs(hp));
grid;
%axis([4e2 3e3 0 1]);
title('带通滤波器');
xlabel('频率(Hz)'); ylabel('幅度');
%------------------------------------------------------------
%------------------------产生信号Aa--------------------------
Aa=filter(bp,ap,x); % Aa表示通过BPF后的信号
figure;
subplot(221);
plot(t,Aa);
axis([2e-2 4e-2 -2 2]);
title('Aa(t)时域');
%------------------------------------------------------------
%-----------------------Aa信号的分析-------------------------
disp('Aa(t)的均值为');
En=mean(Aa);
disp(En);%求Aa(t)均值
disp('Aa(t)的方差为');
Dn=var(Aa);
disp(Dn);%求Aa(t)方差
freq=fft(Aa,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-1500 1500 0 30000]);
xlabel('频率(Hz)');
ylabel('幅值(V)');
title('Aa(t)幅频特性');
[c,lags]=xcorr(Aa,'unbiased'); %求出自相关序列
subplot(224);
plot(lags/fs,c); %在时域内画自相关函数
axis([-0.01 0.01 -1 1]);
xlabel('T');
ylabel('Rn(T)');
title('Aa(t)的自相关函数');
%x(t)的功率谱密度
long=length(c);
Sn=fft(c,long);
labelx=(0:long-1)*2*pi;
plot_magn=10*log10(abs(Sn));
subplot(223)
plot(labelx,plot_magn); %画功率谱密度
%axis([0 6.3e5 -100 50]);
xlabel('w');
ylabel('Sn(w)');
title('Aa(t)的功率谱密度');
%------------------------------------------------------------
%-------------------------产生信号Ab-------------------------
Ab=Aa.*cos(2*pi*Fc*t); % Ab是Aa乘以余弦载波后的信号(即DSB信号)
figure;
subplot(221);
plot(t,Ab);
axis([3e-2 3.5e-2 -2 2]);
title('Ab(t)时域');
%------------------------------------------------------------
%-----------------------Ab信号的分析-------------------------
disp('Ab(t)的均值为');
En=mean(Ab);
disp(En);%求Ab(t)均值
disp('Ab(t)的方差为');
Dn=var(Ab);
disp(Dn);%求Ab(t)方差
freq=fft(Ab,N);%做离散傅里叶
freq_d=abs(fftshift(freq));
w=(-N/2:1:N/2-1)*fs/N; %双边
subplot(222);
plot(w,freq_d);
%axis([-6000 6000 0 1.5e4])

该实验使用MATLAB进行DSB调制与解调,详细展示了信号的生成、滤波及分析过程,包括时域波形、频谱结构、统计特性和自相关函数。此外,还对心电图(ECG)、肌电图(EMG)和脑电图(EEG)三种生物电信号进行了均值、方差、自相关函数和功率谱密度的分析,揭示了各自不同的信号特性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



