数字信号的调制与传输之二进制数字调制原理与matalab仿真
数字信号的调制与传输中,二进制数字调制是一种常见的方式,它用来将数字信号转换为模拟信号或数字信号,以便在传输中传递信息。这种调制方式将二进制数据映射到不同的信号状态或符号上。二进制数字调制有多种类型,包括ASK(幅度移键控)、FSK(频率移键控)、PSK(相位移键控)等,下面本文将介绍它们的原理以及matalab仿真。
1. Amplitude Shift Keying (ASK)
ASK是一种二进制数字调制方式,其中数字“1”和“0”分别映射到不同的振幅值。其原理简述如下:
- 对于二进制“1”:振幅为A1
- 对于二进制“0”:振幅为A0
例如:
- 发送信号s(t)可以表示为:s(t) = A1 * cos(2πfct),其中fc是载波频率。
- 对于二进制“1”,s(t) = A1 * cos(2πfct)
- 对于二进制“0”,s(t) = A0 * cos(2πfct)
2ASK matalab 仿真代码
% 定义参数
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间向量
f_carrier = 10; % 载波频率
bit_stream = [0 1 0 0 1 1 0 1]; % 二进制调制信号
% 生成载波波形
carrier_wave = cos(2 * pi * f_carrier * t);
% 初始化调制信号
modulated_signal = zeros(1, length(bit_stream)*length(t));
% 2ASK调制
for i = 1:length(bit_stream)
if bit_stream(i) == 1
modulated_signal((i-1)*length(t)+1:i*length(t)) = carrier_wave;
end
end
% 生成矩形波形
rect_signal = repelem(bit_stream, fs); % 重复每个比特值
% 绘制波形
subplot(3,1,1);
plot(t, carrier_wave);
title('Carrier Wave');
xlabel('Time');
ylabel('Amplitude');
ylim([-1.5 1.5]);
subplot(3,1,2);
stairs(rect_signal, 'r', 'LineWidth', 2);
title('Binary Signal (Rectangular Wave)');
xlabel('Sample');
ylabel('Amplitude');
ylim([-0.5 1.5]);
xlim([0 length(rect_signal)+1]);
subplot(3,1,3);
plot(0:(length(modulated_signal)-1), modulated_signal);
title('2ASK Modulated Signal');
xlabel('Sample');
ylabel('Amplitude');
ylim([-1.5 1.5]);
% 设置整体图的标题
sgtitle('2ASK Modulation Process');
效果图
2. Frequency Shift Keying (FSK)
FSK是一种二进制数字调制方式,其中数字“1”和“0”分别映射到不同的载波频率。其简述原理如下:
- 对于二进制“1”:使用频率f1
- 对于二进制“0”:使用频率f0
例如:
- 发送信号s(t)可以表示为:s(t) = cos(2πf1t)(对于二进制“1”)和s(t) = cos(2πf0t)(对于二进制“0”)。
2FSK matalab 仿真代码
% 参数设置
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间向量
f_carrier1 = 10; % 第一个载波频率
f_carrier2 = 20; % 第二个载波频率
bit_stream = [0 1 0 0 1 1 0 1]; % 二进制输入信号
% 生成两个载波波形
carrier_wave1 = cos(2 * pi * f_carrier1 * t);
carrier_wave2 = cos(2 * pi * f_carrier2 * t);
% 初始化调制信号
modulated_signal = zeros(1, length(bit_stream)*length(t));
% 2FSK调制
for i = 1:length(bit_stream)
if bit_stream(i) == 0
modulated_signal((i-1)*length(t)+1:i*length(t)) = carrier_wave1;
else
modulated_signal((i-1)*length(t)+1:i*length(t)) = carrier_wave2;
end
end
% 绘制图形
subplot(3,1,1);
plot(t, carrier_wave1);
title('Carrier Wave 1');
xlabel('Time');
ylabel('Amplitude');
ylim([-1.5 1.5]);
subplot(3,1,2);
plot(t, carrier_wave2, 'r');
title('Carrier Wave 2');
xlabel('Time');
ylabel('Amplitude');
ylim([-1.5 1.5]);
subplot(3,1,3);
plot(0:(length(modulated_signal)-1), modulated_signal);
title('2FSK Modulated Signal');
xlabel('Sample');
ylabel('Amplitude');
ylim([-1.5 1.5]);
% 设置整体图的标题
sgtitle('2FSK Modulation Process');
效果图
3. Phase Shift Keying (PSK)
PSK是一种数字调制方式,其中数字“1”和“0”分别映射到不同的载波相位。其简述原理如下:
- 对于二进制“1”:使用相位θ1
- 对于二进制“0”:使用相位θ0
例如:
- 发送信号s(t)可以表示为:s(t) = cos(2πfct + θ1)(对于二进制“1”)和s(t) = cos(2πfct + θ0)(对于二进制“0”)。
2PSK matalab 仿真代码
% 参数设置
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间向量
f_carrier = 10; % 载波频率
bit_stream = [0 1 0 0 1 1 0 1]; % 二进制输入信号
% 生成载波波形
carrier_wave = cos(2 * pi * f_carrier * t);
% 生成矩形波形的二进制输入信号
binary_signal = repelem(bit_stream, length(t));
% 初始化调制信号
modulated_signal = zeros(1, length(bit_stream)*length(t));
% 2PSK调制
for i = 1:length(bit_stream)
if bit_stream(i) == 0
modulated_signal((i-1)*length(t)+1:i*length(t)) = carrier_wave;
else
modulated_signal((i-1)*length(t)+1:i*length(t)) = -carrier_wave;
end
end
% 绘制图形
subplot(3,1,1);
plot(t, carrier_wave);
title('Carrier Wave');
xlabel('Time');
ylabel('Amplitude');
ylim([-1.5 1.5]);
subplot(3,1,2);
stairs(0:(length(binary_signal)-1), binary_signal);
title('Binary Input Signal (Rectangular Wave)');
xlabel('Sample');
ylabel('Amplitude');
ylim([-0.5 1.5]);
subplot(3,1,3);
plot(0:(length(modulated_signal)-1), modulated_signal);
title('2PSK Modulated Signal');
xlabel('Sample');
ylabel('Amplitude');
ylim([-1.5 1.5]);
% 设置整体图的标题
sgtitle('2PSK Modulation Process with Binary Input Signal (Rectangular Wave)');
效果图
写在最后
以上是个人的课程作业记录,欢迎大家指正。😊