实现一:AM信号的调制与相干解调
一、实验要求:
1.绘制原始信号m(t)时域、频域波形;
2.绘制发送信号sAM(t)时域、频域波形.
3.绘制接收信号rAM(t)时域、频域波形;
4.绘制相乘器后信号rAM_C(t)时域、频域波形;
5.绘制LPF后信号yAM(t)时域、频域波形;
6.绘制解调器输出信号的时域、频域波形。
二、代码实现
clear all;
clc;
fn=5;
fs=1000;
Ts=1/fs;
n=0:999;
t=n*Ts;
fc=100;
y=sin(2*pi*fn*t);
zb=cos(2*pi*fc*t); %载波
%原始信号波形,时频域
figure(1);
subplot(3,2,1);
plot(t,y);
title('原始信号时域波形');
N=1000;
yf=fft(y,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,2);
plot(f,yf(1:N/2));
title('原始信号频域波形');
A=2; %直流偏量
yam=(y+A).*zb;
%已调信号sam的时频域
subplot(3,2,3);
plot(t,yam);
title('已调信号时域波形');
N=1000;
yf=fft(yam,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,4);
plot(f,yf(1:N/2));
title('已调信号频域波形');
%叠加加性高斯白噪声
AWGN=randn(1,1000);
ram=yam+AWGN;
%叠加加性高斯白噪声的时频谱
subplot(3,2,5);
plot(t,ram);
title('叠加高斯白噪声后的时域波形');
N=1000;
yf=fft(ram,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,6);
plot(f,yf(1:N/2));
title('叠加高斯白噪声后的频域波形');
%滤波器设计与使用
%通带频率范围为[f_low, f_high](Hz)。
% 参数设置
fs = 1000; % 采样率
f_low = 95; % 通带低频
f_high = 105; % 通带高频
N = 4; % 滤波器阶数
Wn = [f_low/(fs/2) f_high/(fs/2)]; % 归一化通带频率
% 设计带通滤波器
[b, a] = butter(N, Wn, 'bandpass');
% 应用滤波器到信号s上
filtered_ram = filter(b, a, ram);
% 现在filtered_ram就是经过带通滤波器处理后的信号
N=1000;
yf=fft(filtered_ram,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
% subplot(3,2,1);
% plot(t,filtered_ram);
% title('已过BPF信号的时域波形');
% subplot(3,2,2);
% plot(f,yf(1:N/2));
% title('已过BPF信号的频域波形');
ramc=filtered_ram.*zb*2;
figure(2);
subplot(3,2,1);
plot(t,ramc);
title('乘法器后的时域波形');
N=1000;
yf=fft(ramc,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,2);
plot(f,yf(1:N/2));
title('乘法器后的频域波形');
%设计低通滤波器
% 其截止频率为f_cut(Hz)。
% 参数设置
fs = 1000; % 采样率
f_cut = 7.5; % 截止频率
N = 4; % 滤波器阶数
Wn = f_cut / (fs/2); % 归一化截止频率
% 设计低通滤波器
[b, a] = butter(N, Wn, 'low');
% 应用滤波器到信号s上
yam = filter(b, a, ramc);
% 现在yam就是经过低通滤波器处理后的信号
subplot(3,2,3);
plot(t,yam);
title('过LPF后的时域波形');
N=1000;
yf=fft(yam,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,4);
plot(f,yf(1:N/2));
title('过LPF后的频域波形');
mt2=yam-A;
subplot(3,2,5);
plot(t,mt2);
title('解调器输出的时域波形');
N=1000;
yf=fft(mt2,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,6);
plot(f,yf(1:N/2));
title('解调器输出的频域波形');
三、实验结果
实现二:AM信号的调制与包络检波
一、实验要求
7.绘制包络检波后信号rAM_N(t)时域、频域波形;
8.绘制LPF后信号yAM(t)时域、频域波形;
9.绘制解调器输出信号时域、频域波形。
二、代码实现
clear all;
clc;
fn=5;
fs=1000;
Ts=1/fs;
n=0:999;
t=n*Ts;
fc=100;
y=sin(2*pi*fn*t);
zb=cos(2*pi*fc*t);
N=1000;
yf=fft(y,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
A=2;%直流偏量
yam=(y+A).*zb;
AWGN=randn(1,1000);
ram=yam+AWGN;
N=1000;
yf=fft(ram,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
%滤波器设计与使用
% 其通带频率范围为[f_low, f_high](Hz)。
% 参数设置
fs = 1000; % 采样率
f_low = 95; % 通带低频
f_high = 105; % 通带高频
N = 4; % 滤波器阶数
Wn = [f_low/(fs/2) f_high/(fs/2)]; % 归一化通带频率
% 设计带通滤波器
[b, a] = butter(N, Wn, 'bandpass');
% 应用滤波器到信号s上
filtered_ram = filter(b, a, ram);
% 现在filtered_ram就是经过带通滤波器处理后的信号
N=1000;
yf=fft(filtered_ram,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
figure(1);
subplot(2,1,1);
plot(t,filtered_ram);
title('已过BPF信号的时域波形');
subplot(2,1,2);
plot(f,yf(1:N/2));
title('已过BPF信号的频域波形');
%包络检波
% 计算解析信号
y = hilbert(filtered_ram);
% 计算包络
ram_n = abs(y);
figure(2);
subplot(3,2,1);
plot(t, ram_n);
title('包络');
xlabel('时间');
ylabel('幅度');
N=1000;
yf=fft(ram_n,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,2);
plot(f,yf(1:N/2));
title('包络频谱');
% 参数设置
fs = 1000; % 采样率
f_cut = 7.5; % 截止频率
N = 4; % 滤波器阶数
Wn = f_cut / (fs/2); % 归一化截止频率
% 设计低通滤波器
[b, a] = butter(N, Wn, 'low');
% 假设你有一个信号s
% s = ...; % 这里应该是你的信号
% 应用滤波器到信号s上
yam = filter(b, a, ram_n);
% 现在yam就是经过低通滤波器处理后的信号
subplot(3,2,3);
plot(t,yam);
title('过LPF后的时域波形');
N=1000;
yf=fft(yam,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,4);
plot(f,yf(1:N/2));
title('过LPF后的频域波形');
mt2=yam-A;
subplot(3,2,5);
plot(t,mt2);
title('解调器输出的时域波形');
N=1000;
yf=fft(mt2,N);
yf=abs(yf);
f=fs*(0:N/2-1)/N;
subplot(3,2,6);
plot(f,yf(1:N/2));
title('解调器输出的频域波形');
三、实验结果