振幅调制与解调制电路的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仿真
我写的是依托够使,抄别人的吧