通信原理实验(一)模拟线性调制

余弦波产生

function signal = cosx(A, fc, t1, t2, fs)
    t = t1 : 1/fs : t2;
    signal = A * cos(2 * pi * fc * t);
end

A为振幅,fc为频率,t1、t2分别为截至时间,fs为采样率。

AM信号

AM信号产生

AM调制程序

function signal = AM(mt, ct)
    A = abs(min(mt));
    signal = (mt + 1.5 * A) .* ct;
end

mt为调制信号,ct为载波信号。

实验主程序

clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
ct = cosx(A2, fc2, t1, t2, fs);
%% 调制
yam = AM(mt, ct);
%% 解调
xam = coherent(yam, ct, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(ct); %载波信号FFT
HAM = fft(yam); %已调信号FFT
% Hxam = fft(xam); %解调信号FFT
NF = length(HAM);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt,'LineWidth', 1.2);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, ct,'LineWidth', 1.2);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, yam,'LineWidth', 1.2);title('AM信时域波形')
subplot(2, 3, 4);plot(f, abs(HM),'LineWidth', 1.2);title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS),'LineWidth', 1.2);title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(HAM),'LineWidth', 1.2);title('AM信号频谱')
% figure(2);
% subplot(2, 1, 1);plot(t, xam);title('AM解调信号时域波形')
% subplot(2, 1, 2);plot(f, abs(Hxam));title('AM解调信号频谱')

实验结果

AM信号频谱含有纯载波分量,而只有两个边带分量携带信息,所以AM调制方式的功率利用率较低。

AM信号解调

滤波器设计

function Hd = LPF(fpass, fstop, fs)
%LPF 返回离散时间滤波器对象。

% MATLAB Code
% Generated by MATLAB(R) 23.2 and Signal Processing Toolbox 23.2.
% Generated on: 14-Aug-2024 14:31:40

% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.

% All frequency values are in Hz.
Fs = fs;  % Sampling Frequency

Fpass = fpass;         % Passband Frequency
Fstop = fstop;         % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);

% [EOF]

相干解调程序

function signal = coherent(y, s, fpass, fstop, fs)
    lowpass = LPF(fpass, fstop, fs);
    signal = y .* s;
    signal = filter(lowpass, signal);
end

实验主程序

clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
ct = cosx(A2, fc2, t1, t2, fs);
%% 调制
yam = AM(mt, ct);
%% 解调
xam = coherent(yam, ct, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(ct); %载波信号FFT
HAM = fft(yam); %已调信号FFT
Hxam = fft(xam); %解调信号FFT
NF = length(HAM);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt,'LineWidth', 1.2);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, ct,'LineWidth', 1.2);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, yam,'LineWidth', 1.2);title('AM信时域波形')
subplot(2, 3, 4);plot(f, abs(HM),'LineWidth', 1.2);title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS),'LineWidth', 1.2);title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(HAM),'LineWidth', 1.2);title('AM信号频谱')
figure(2);
subplot(2, 1, 1);plot(t, xam);title('AM解调信号时域波形')
subplot(2, 1, 2);plot(f, abs(Hxam));title('AM解调信号频谱')

实验结果

可看出解调信号中含有直流分量,可以理解为AM信号的调制信号必须恒为正值,所以AM的调制信号一定含有直流分量,所以解调后的信号也含有直流分量。

DSB信号

DSB信号产生

DSB调制程序

function signal = DSB(mt, ct)
    signal = mt .* ct;
end

实验主程序


clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
st = cosx(A2, fc2, t1, t2, fs);
%% 调制
y = DSB(mt, st);
%% 解调
x = coherent(y, st, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(st); %载波信号FFT
Hy = fft(y); %已调信号FFT
% Hx = fft(x); %解调信号FFT
NF = length(Hy);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, st);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, y);title('DSB信时域波形')
subplot(2, 3, 4);plot(f, abs(HM));title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS));title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(Hy));title('DSB信号频谱')
% figure(2);
% subplot(2, 1, 1);plot(t, x);title('DSB解调信号时域波形')
% subplot(2, 1, 2);plot(f, abs(Hx));title('DSB解调信号频谱')

实验结果

DSB信号的频谱不含载波成分,所以功率利用率为1,所以DSB也称作抑制载波的调制方式,频谱成分由上下边带组成。

DSB信号解调

相干解调程序相同。

实验主程序

clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
st = cosx(A2, fc2, t1, t2, fs);
%% 调制
y = DSB(mt, st);
%% 解调
x = coherent(y, st, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(st); %载波信号FFT
Hy = fft(y); %已调信号FFT
Hx = fft(x); %解调信号FFT
NF = length(Hy);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, st);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, y);title('DSB信时域波形')
subplot(2, 3, 4);plot(f, abs(HM));title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS));title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(Hy));title('DSB信号频谱')
figure(2);
subplot(2, 1, 1);plot(t, x);title('DSB解调信号时域波形')
subplot(2, 1, 2);plot(f, abs(Hx));title('DSB解调信号频谱')

实验结果

DSB解调后的信号不含直流成分,因为实验中DSB的调制信号为纯交流信号,不含直流成分。

SSB信号

SSB信号产生

产生原理

SSB信号产生可以使用滤波法,也可以使用相移法,本实验使用相移法。

希尔伯特变换器:就是一个宽带相移器,将每个频率成分都相移pi/2。

具体操作,将调制信号和载波通过希尔伯特变换器后相乘得到y1,将调制信号和载波相乘得到y2,

y = y1 + y2得到保留下边带的SSB信号,y = y1 - y2得到保留上边带的SSB信号。

调制程序

function signal = SSB(mt, ct, mod)
     sth = imag(hilbert(st));
     mth = imag(hilbert(mt));
     if mod == 0
         signal = (1/2) * mt .* ct - (1/2) * mth .* sth;
     end

     if mod == 1
         signal = (1/2) * mt .* ct + (1/2) * mth .* sth;
     end
         
end

注意:matlab中的hilbert(x) 是得到信号x的解析信号,解析信号的虚部才是数学意义上信号x的希尔伯特变换。

实验主程序

%截图保存路径 H:\OneDrive\learn\experimental\principle of communication
clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
st = cosx(A2, fc2, t1, t2, fs);
%% 调制
mod = 0; %保留上边带
%mod = 1; %保留下边带
y = SSB(mt, st, mod);
%% 解调
x = coherent(y, st, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(st); %载波信号FFT
Hy = fft(y); %已调信号FFT
% Hx = fft(x); %解调信号FFT
NF = length(Hy);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, st);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, y);title('SSB信时域波形')
subplot(2, 3, 4);plot(f, abs(HM));title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS));title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(Hy));title('SSB信号频谱')
% figure(2);
% subplot(2, 1, 1);plot(t, x);title('SSB解调信号时域波形')
% subplot(2, 1, 2);plot(f, abs(Hx));title('SSB解调信号频谱')

实验结果

 

该实验保留上边带,所以已调信号只有 10 + 1000 Hz这一个中心频率而没有 1000 - 10 Hz这个中心频率。

SSB解调

采用相干解调

实验主程序

%截图保存路径 H:\OneDrive\learn\experimental\principle of communication
clc;clear;
%%参数设定
A1 = sqrt(2); A2 = 2;
fc1 = 10; fc2 = 1000;
fs = 10000;
t1 = -0.5; t2 = 0.5;
t = t1 : 1/fs : t2;
%% 调制信号与载波设定
mt = cosx(A1, fc1, t1, t2, fs);
st = cosx(A2, fc2, t1, t2, fs);
%% 调制
mod = 0; %保留上边带
%mod = 1; %保留下边带
y = SSB(mt, st, mod);
%% 解调
x = coherent(y, st, 5 * fc1, fc2 / 3, fs);
%% 频谱分析
HM = fft(mt); %调制信号FFT
HS = fft(st); %载波信号FFT
Hy = fft(y); %已调信号FFT
Hx = fft(x); %解调信号FFT
NF = length(Hy);
nf = 0 : 1/NF : 1 - 1/NF; f = nf * fs;

%% 画图
figure(1);
subplot(2, 3, 1);plot(t, mt);title('调制信号时域波形')
subplot(2, 3, 2);plot(t, st);title('载波信号时域波形')
subplot(2, 3, 3);plot(t, y);title('SSB信时域波形')
subplot(2, 3, 4);plot(f, abs(HM));title('调制信号频谱')
subplot(2, 3, 5);plot(f, abs(HS));title('载波信号频谱')
subplot(2, 3, 6);plot(f, abs(Hy));title('SSB信号频谱')
figure(2);
subplot(2, 1, 1);plot(t, x);title('SSB解调信号时域波形')
subplot(2, 1, 2);plot(f, abs(Hx));title('SSB解调信号频谱')

实验结果

解调信号同样没有直流成分,原因和DSB相同,但SSB信号占用的带宽为AM和DSB的0.5倍。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值