1、FSK(ASK)、PSK、DPSK、QPSK 调制解调的工作原理; 2、数字基带信号的传输过程。MATLAB代码
时间: 2023-07-04 18:08:29 浏览: 94
1FSK(ASK)、PSK、DPSK、QPSK 调制解调的工作原理:
FSK(Frequency Shift Keying)调制解调:频率转移键控技术,将数字信号转化为相应的频率信号进行传输。
ASK(Amplitude Shift Keying)调制解调:幅度转移键控技术,将数字信号转化为相应的幅度信号进行传输。
PSK(Phase Shift Keying)调制解调:相位转移键控技术,将数字信号转化为相应的相位信号进行传输。
DPSK(Differential Phase Shift Keying)调制解调:差分相位转移键控技术,将数字信号的相邻符号之间的差分相位作为传输信号进行传输。
QPSK(Quadrature Phase Shift Keying)调制解调:正交相位转移键控技术,将数字信号拆分成两路,分别进行相位转移,再进行叠加,进行传输。
2、数字基带信号的传输过程:
数字基带信号传输一般包括三个部分:数字编码、调制和解调。
数字编码:将模拟信号经过采样、量化、编码后得到数字信号。
调制:将数字信号通过不同的调制方式(如ASK、FSK、PSK、DPSK、QPSK等)转换为模拟信号,进行传输。
解调:接收端接收到模拟信号后,将其转换为数字信号,通过解调方式(与调制方式相反)得到原始的数字信号。
MATLAB代码示例:
1. FSK调制解调:
% FSK调制
clear all;
close all;
clc;
Fs = 10000; %采样频率
Fc1 = 2000; %第一个频率
Fc2 = 4000; %第二个频率
T = 1/Fs; %采样间隔
Amp = 1; %幅度
data = [0 1 0 1 1 0 1 0]; %数字信号
t = (0:length(data)-1)/Fs; %时域范围
carrier1 = Amp*cos(2*pi*Fc1*t); %第一个载波
carrier2 = Amp*cos(2*pi*Fc2*t); %第二个载波
signal = []; %FSK信号
for i=1:length(data)
if data(i) == 1
signal = [signal carrier1];
else
signal = [signal carrier2];
end
end
figure;
plot(signal);title('FSK信号');
% FSK解调
dtmfdemod(signal,Fs,[Fc1 Fc2],[],[],[]);
2. PSK调制解调:
% PSK调制
clear all;
close all;
clc;
Fs = 10000; %采样频率
Fc = 2000; %频率
T = 1/Fs; %采样间隔
Amp = 1; %幅度
data = [0 1 0 1 1 0 1 0]; %数字信号
t = (0:length(data)-1)/Fs; %时域范围
carrier = Amp*cos(2*pi*Fc*t); %载波
delay = pi/4; %相位偏移
signal = []; %PSK信号
for i=1:length(data)
if data(i) == 1
signal = [signal carrier*cos(delay)];
else
signal = [signal carrier*cos(delay+pi)];
end
end
figure;
plot(signal);title('PSK信号');
% PSK解调
dtmfdemod(signal,Fs,[],[],[],delay);
3. QPSK调制解调:
% QPSK调制
clear all;
close all;
clc;
Fs = 10000; %采样频率
Fc = 2000; %频率
T = 1/Fs; %采样间隔
Amp = 1; %幅度
data = [0 1 0 1 1 0 1 0]; %数字信号
t = (0:length(data)-1)/Fs; %时域范围
carrier1 = Amp*cos(2*pi*Fc*t); %第一个载波
carrier2 = Amp*sin(2*pi*Fc*t); %第二个载波
signal = []; %QPSK信号
for i=1:2:length(data)
if data(i) == 0 && data(i+1) == 0
signal = [signal carrier1.*cos(0)+carrier2.*sin(0)];
elseif data(i) == 0 && data(i+1) == 1
signal = [signal carrier1.*cos(pi/2)+carrier2.*sin(pi/2)];
elseif data(i) == 1 && data(i+1) == 0
signal = [signal carrier1.*cos(pi)+carrier2.*sin(pi)];
elseif data(i) == 1 && data(i+1) == 1
signal = [signal carrier1.*cos(-pi/2)+carrier2.*sin(-pi/2)];
end
end
figure;
plot(signal);title('QPSK信号');
% QPSK解调
dtmfdemod(signal,Fs,[],[],[],[]);