fsk调制解调的matlab
时间: 2023-10-31 11:31:00 浏览: 88
调制部分:
假设要调制的信号为x(t),调制信号为c(t),则FSK调制的公式为:
s(t) = Ac*cos(2*pi*f1*t) (x(t) = 0)
s(t) = Ac*cos(2*pi*f2*t) (x(t) = 1)
其中,f1和f2为两个不同的载频,Ac为调制幅度。
在MATLAB中可以通过以下代码实现FSK调制:
% 设置信号参数
fs = 1000; % 采样率
T = 1/fs; % 采样间隔
t = 0:T:1-T; % 时间序列
f1 = 10; % 载频1
f2 = 20; % 载频2
Ac = 1; % 调制幅度
% 生成调制信号
x = randi([0,1],1,length(t)); % 生成随机二进制序列
c1 = Ac*cos(2*pi*f1*t); % 载频1信号
c2 = Ac*cos(2*pi*f2*t); % 载频2信号
s = zeros(1,length(t)); % 初始化调制信号
for i = 1:length(t)
if x(i) == 0
s(i) = c1(i);
else
s(i) = c2(i);
end
end
解调部分:
假设接收到的调制信号为r(t),则FSK解调的公式为:
r(t) = Ac*cos(2*pi*f1*t + phi) (x(t) = 0)
r(t) = Ac*cos(2*pi*f2*t + phi) (x(t) = 1)
其中,phi为相位偏移量。
在MATLAB中可以通过以下代码实现FSK解调:
% 解调信号
r = s.*cos(2*pi*f1*t); % 接收到的信号与载频1相乘
p1 = sum(r)/length(t); % 计算平均功率
r = s.*cos(2*pi*f2*t); % 接收到的信号与载频2相乘
p2 = sum(r)/length(t); % 计算平均功率
if p1 > p2
x_hat = zeros(1,length(x));
else
x_hat = ones(1,length(x));
end
其中,x_hat为解调后的二进制序列。
阅读全文