通信系统建模与仿真----实验

振幅调制与解调制电路的MATLAB仿真

实验目的:

1、深入理解各种振幅调制与解调制电路的工作原理;

2、掌握振幅调制与解调制电路的MATLAB仿真方法。

预习要求:

1、熟悉振幅调制与解调制电路的工作原理及主要性能;

2、掌握振幅调制与解调制电路MATLAB仿真的建模过程。

实验内容及步骤:

1、编写matlab程序实现AM振幅调制与解调制的设计与仿真;

1)设计AM振幅调制与解调制仿真电路,要求调制信号的幅度A和频率F可变;载波信号的幅度A和频率F可变,调制度ma可变;

2)绘制调制信号u11、载波信号uc1和已调波信号uam1的时域波形图和频谱图(要求谱线清晰);

3)要求调制信号为三个以上正弦波信号的合成,幅度和频率均可变,绘制调制信号u12、载波信号uc1和已调波信号uam2的时域波形图和频谱图(要求谱线清晰);

4)用同步检波对已调波信号uam1进行解调制,在同一幅图中绘制原调制信号u11和解调后的信号y11,并绘制这两个信号的频谱图;

5)用同步检波对已调波信号uam2进行解调制,在同一幅图中绘制原调制信号u12和解调后的信号y12,并绘制这两个信号的频谱图。

2、编写matlab程序实现DSB振幅调制与解调制的设计与仿真;

1)设计DSB振幅调制与解调制仿真电路,要求调制信号的幅度A和频率F可变;载波信号的幅度A和频率F可变;

2)绘制调制信号u21、载波信号uc2和已调波信号udsb1的时域波形图和频谱图(要求谱线清晰);

3)要求调制信号为三个以上正弦波信号的合成,幅度和频率均可变,绘制调制信号u22、载波信号uc2和已调波信号udsb2的时域波形图和频谱图(要求谱线清晰);观察相位突变点处的波形;

4)用同步检波对已调波信号udsb1进行解调制,在同一幅图中绘制原调制信号u21和解调后的信号y21,并绘制这两个信号的频谱图;5)用同步检波对已调波信号udsb2进行解调制,在同一幅图中绘制原调制信号u22和解调后的信号y22,并绘制这两个信号的频谱图。

实验报告要求:

1、给出AM、DSB振幅调制与解调制仿真电路的设计思想;

2、绘制各种振幅调制与解调制仿真电路的输入输出波形对比图;

3、绘制各种振幅调制与解调制仿真电路的输入输出频谱图;

4、根据仿真结果,和理论知识进行对比分析,得出仿真结论。

实验过程:

1.编写matlab程序实现AM振幅调制与解调制的设计与仿真

(1)单信号AM振幅调制与解调制

function [modulating_amplitude, modulating_frequency, carrier_amplitude, carrier_frequency, modulation_index] = AM_simulation(modulating_amplitude, modulating_frequency, carrier_amplitude, carrier_frequency, modulation_index)
%% 单信号AM振幅调制与解调制    

% 生成信号
fs = 20 * max(modulating_frequency, carrier_frequency);
t = 0:1/fs:2/min(modulating_frequency, carrier_frequency);
modulating_signal = modulating_amplitude * cos(2 * pi * modulating_frequency * t);  % 调制信号
carrier_signal = carrier_amplitude * cos(2 * pi * carrier_frequency * t);  % 载波信号
am_signal = (1 + modulation_index * modulating_signal) .* carrier_signal;  % AM振幅调制

% 绘制波形和频谱图
modulating_spectrum = fftshift(fft(modulating_signal));
carrier_spectrum = fftshift(fft(carrier_signal));
am_spectrum = fftshift(fft(am_signal));
frequency_axis = linspace(-fs/2, fs/2, length(t));

% 绘制图形
subplot(3, 1, 1); plot(t, modulating_signal); grid on
title('调制信号'); 
subplot(3, 1, 2); plot(t, carrier_signal); grid on
title('载波信号');
subplot(3, 1, 3); plot(t, am_signal); grid on
title('已调波信号');
sgtitle('单个调制信号的时域波形');

figure;
subplot(3, 1, 1); plot(frequency_axis, abs(modulating_spectrum)); grid on
title('调制信号的频谱图');
subplot(3, 1, 2); plot(frequency_axis, abs(carrier_spectrum)); grid on
title('载波信号的频谱图');
subplot(3, 1, 3); plot(frequency_axis, abs(am_spectrum)); grid on
title('已调波信号的频谱图');
sgtitle('单个调制信号的频谱图');

% 同步检波解调
demodulated_signal = am_signal .* carrier_signal;
Rp = 3;  % 信号衰减幅度
Rs = 60; % 信号衰减幅度
Wp = 40/500;  % 通带截止频率
Ws = 150/500; % 阻带截止频率
[n, Wn] = ellipord(Wp, Ws, Rp, Rs); % 阶数n
[b, a] = ellip(n, Rp, Rs, Wn); % 传递函数分子分母b,a
demodulated_signal = 50 * filter(b, a, demodulated_signal);

modulating_spectrum = fftshift(fft(modulating_signal));
demodulated_spectrum = fftshift(fft(demodulated_signal));
frequency_axis = linspace(-fs/2, fs/2, length(t));

figure;
subplot(4, 1, 1); plot(t, modulating_signal); grid on
title('调制信号'); 
subplot(4, 1, 2); plot(t, demodulated_signal); grid on
title('解调信号');
subplot(4, 1, 3); plot(frequency_axis(1800:2250), abs(modulating_spectrum(1800:2250))); grid on
title('调制信号的频谱图');
subplot(4, 1, 4); plot(frequency_axis(1800:2250), abs(demodulated_spectrum(1800:2250))); grid on
title('解调信号的频谱图');
sgtitle('单个调制信号的同步检波波形');
end

使用方法:在matlab运行窗口的括号里输入参数,逗号隔开自己编

(2)多信号AM振幅调制与解调制

function [signal1_amplitude, signal2_amplitude, signal3_amplitude, signal1_frequency, signal2_frequency, signal3_frequency, carrier_amplitude, carrier_frequency, modulation_index] = AM_simulation(signal1_amplitude, signal2_amplitude, signal3_amplitude, signal1_frequency, signal2_frequency, signal3_frequency, carrier_amplitude, carrier_frequency, modulation_index)
%% 第二部分 - 合成多个调制信号进行AM振幅调制与解调制

% 生成时间轴
fs2 = 20 * carrier_frequency;
t2 = 0:1/fs2:2/carrier_frequency;

% 合成调制信号
modulated_signal = signal1_amplitude * cos(2 * pi * signal1_frequency * t2) + ...
                   signal2_amplitude * cos(2 * pi * signal2_frequency * t2) + ...
                   signal3_amplitude * cos(2 * pi * signal3_frequency * t2);

% 生成载波信号
carrier_signal = carrier_amplitude * cos(2 * pi * carrier_frequency * t2);

% 进行AM振幅调制
am_signal = (1 + modulation_index * modulated_signal) .* carrier_signal;

% 绘制时域波形和频谱图
modulated_spectrum = fftshift(fft(modulated_signal));
carrier_spectrum = fftshift(fft(carrier_signal));
am_spectrum = fftshift(fft(am_signal));
frequency_axis = linspace(-fs2/2, fs2/2, length(t2));

% 绘制时域波形图
figure;
subplot(3, 1, 1); plot(t2, modulated_signal); grid on
title('调制信号');
subplot(3, 1, 2); plot(t2, carrier_signal); grid on
title('载波信号');
subplot(3, 1, 3); plot(t2, am_signal); grid on
title('已调波信号');
sgtitle('多个调制信号的调制波形');

% 绘制频谱图
figure;
subplot(3, 1, 1); plot(frequency_axis, abs(modulated_spectrum)); grid on
title('调制信号的频谱图');
subplot(3, 1, 2); plot(frequency_axis, abs(carrier_spectrum)); grid on
title('载波信号的频谱图');
subplot(3, 1, 3); plot(frequency_axis, abs(am_spectrum)); grid on
title('已调波信号的频谱图'); 
sgtitle('多个调制信号的频谱图');

% 同步检波解调
synchronous_demodulated_signal = am_signal .* carrier_signal;

% 设计低通滤波器以去除高频内容
passband_ripple = 3;  % 通带波纹
stopband_attenuation = 60; % 阻带衰减
passband_cutoff_frequency = 40/(2*fs2);  % 通带截止频率
stopband_cutoff_frequency = 150/(2*fs2); % 阻带截止频率

% 计算滤波器的阶数和传递函数
[filter_order, Wn] = ellipord(passband_cutoff_frequency, stopband_cutoff_frequency, passband_ripple, stopband_attenuation);
[b, a] = ellip(filter_order, passband_ripple, stopband_attenuation, Wn);

% 使用滤波器进行解调
demodulated_signal = filter(b, a, synchronous_demodulated_signal);

% 绘制时域波形和频谱图
modulated_spectrum = fftshift(fft(modulated_signal));
demodulated_spectrum = fftshift(fft(demodulated_signal));

% 绘制时域波形图
figure;
subplot(4, 1, 1); plot(t2, modulated_signal); grid on
title('调制信号');
subplot(4, 1, 2); plot(t2, demodulated_signal); grid on
title('解调信号');

% 绘制频谱图
figure;
subplot(4, 1, 1); plot(frequency_axis, abs(modulated_spectrum)); grid on
title('调制信号的频谱图');
subplot(4, 1, 2); plot(frequency_axis, abs(demodulated_spectrum)); grid on
title('解调信号的频谱图');
sgtitle('多个调制信号的检波波形');

end

使用方法:同上

2.编写matlab程序实现DSB振幅调制与解调制的设计与仿真

(1)单信号DSB振幅调制与解调制

function [modulated_signal, modulating_frequency, carrier_amplitude, carrier_frequency] = dsb_modulation_simulation(a_mod, f_mod, a_carrier, f_carrier)

% 设置采样频率和时间范围
sampling_frequency = 10 * f_carrier;
time_axis = 0:1/sampling_frequency:2*(1/f_mod);

% 生成调制信号
modulating_signal = a_mod * cos(2*pi*f_mod*time_axis);

% 生成载波信号
carrier_signal = a_carrier * cos(2*pi*f_carrier*time_axis);

% 生成已调波信号
modulated_signal = modulating_signal .* carrier_signal;

% 绘制时域波形图
figure;
subplot(3,1,1);
plot(time_axis, modulating_signal);
title('调制信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(3,1,2);
plot(time_axis, carrier_signal);
title('载波信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(3,1,3);
plot(time_axis, modulated_signal);
title('已调波信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

sgtitle('单个信号时域波形图')

% 计算并绘制频谱图
frequency_axis = linspace(-sampling_frequency/2, sampling_frequency/2, length(time_axis));
modulating_spectrum = fftshift(fft(modulating_signal));
carrier_spectrum = fftshift(fft(carrier_signal));
modulated_spectrum = fftshift(fft(modulated_signal));

figure;
subplot(3,1,1);
plot(frequency_axis, abs(modulating_spectrum));
title('调制信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(3,1,2);
plot(frequency_axis, abs(carrier_spectrum));
title('载波信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(3,1,3);
plot(frequency_axis, abs(modulated_spectrum));
title('已调波信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

sgtitle('单个信号频谱图')

% 同步检波解调已调波信号
demodulated_signal = modulated_signal .* carrier_signal;

% 设定解调滤波器参数
passband_ripple = 3; % 通带最大允许衰减(dB)
stopband_attenuation = 60; % 阻带最小要求衰减(dB)
passband_frequency = 0.08; % 通带截止频率(规范化频率)
stopband_frequency = 0.4; % 阻带截止频率(规范化频率)

% 计算滤波器阶数和传递函数分子分母
[n, Wn] = ellipord(passband_frequency, stopband_frequency, passband_ripple, stopband_attenuation);
[b, a] = ellip(n, passband_ripple, stopband_attenuation, Wn);

% 使用滤波器进行解调
demodulated_signal = filter(b, a, demodulated_signal);

% 计算原调制信号和解调后的信号的频谱
modulating_spectrum_demod = fftshift(fft(modulating_signal));
demodulated_spectrum = fftshift(fft(demodulated_signal));

% 绘制原调制信号和解调后的信号的时域波形图和频谱图
figure;
subplot(4,1,1);
plot(time_axis, modulating_signal);
title('原调制信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(4,1,2);
plot(time_axis, demodulated_signal);
title('解调后的信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(4,1,3);
plot(frequency_axis, abs(modulating_spectrum_demod));
title('原调制信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(4,1,4);
plot(frequency_axis, abs(demodulated_spectrum));
title('解调后的信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

sgtitle('单个信号原调制信号和解调后的信号')

end

使用方法:

(2)多信号DSB振幅调制与解调制

function [carrier_amplitude, carrier_frequency, modulating_amplitudes, modulating_frequencies] = DSB_AM_modulation(carrier_amplitude, carrier_frequency, modulating_amplitudes, modulating_frequencies)
% DSB振幅调制仿真

% 采样参数
fs = 10 * carrier_frequency;
t = 0:1/fs:2*(1/500);

% 生成载波信号
carrier_signal = carrier_amplitude * cos(2*pi*carrier_frequency*t);
carrier_spectrum = fftshift(fft(carrier_signal));

% 合成调制信号,合并多个正弦波信号
modulating_signal = 0;
for i = 1:length(modulating_amplitudes)
    modulating_signal = modulating_signal + modulating_amplitudes(i) * cos(2*pi*modulating_frequencies(i)*t);
end

% DSB振幅调制
am_signal = (1 + modulating_signal) .* carrier_signal;

% 绘制时域波形图
figure;
subplot(3,1,1);
plot(t, modulating_signal);
title('调制信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(3,1,2);
plot(t, carrier_signal);
title('载波信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(3,1,3);
plot(t, am_signal);
title('已调波信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

sgtitle('时域波形图')

% 计算并绘制频谱图
F = linspace(-fs/2, fs/2, length(t));
modulating_spectrum = fftshift(fft(modulating_signal));
am_spectrum = fftshift(fft(am_signal));

figure;
subplot(3,1,1);
plot(F, abs(modulating_spectrum));
title('调制信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(3,1,2);
plot(F, abs(carrier_spectrum));
title('载波信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(3,1,3);
plot(F, abs(am_spectrum));
title('已调波信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

sgtitle('频谱图')

% 同步检波解调已调波信号
demodulated_signal = am_signal .* carrier_signal;

% 使用滤波器进行解调
Rp = 3;         % 通带最大允许衰减(dB)
Rs = 60;        % 阻带最小要求衰减(dB)
Wp = 0.08;      % 通带截止频率(规范化频率)
Ws = 0.4;       % 阻带截止频率(规范化频率)

% 计算阶数和传递函数分子分母
[n, Wn] = ellipord(Wp, Ws, Rp, Rs);
[b, a] = ellip(n, Rp, Rs, Wn);

% 使用滤波器进行解调
demodulated_signal = filter(b, a, demodulated_signal);

% 计算原调制信号和解调后的信号的频谱
modulating_spectrum_demod = fftshift(fft(modulating_signal));
demodulated_spectrum = fftshift(fft(demodulated_signal));

% 绘制原调制信号和解调后的信号的时域波形图和频谱图
figure;
subplot(4,1,1);
plot(t, modulating_signal);
title('原调制信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(4,1,2);
plot(t, demodulated_signal);
title('解调后的信号');
xlabel('时间 (秒)');
ylabel('幅度');
grid on

subplot(4,1,3);
plot(F, abs(modulating_spectrum_demod));
title('原调制信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

subplot(4,1,4);
plot(F, abs(demodulated_spectrum));
title('解调后的信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on

sgtitle('原调制信号和解调后的信号')
end

实验二 高频小信号放大器的MULTISIM仿真

我写的是依托够使,抄别人的吧

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值