二进制fsk的matlab代码
时间: 2023-10-21 10:06:17 浏览: 85
以下是一个简单的二进制FSK调制和解调的MATLAB代码示例:
% 设置参数
f1 = 1000; % 第一个频率
f2 = 2000; % 第二个频率
Tb = 1/1000; % 每个比特的持续时间
Fs = 10000; % 采样率
t = 0:1/Fs:Tb-1/Fs; % 一个比特的时间向量
% 生成消息序列
msg = [1 0 1 1 0 1 0 0];
% 调制
mod_signal = []; % 初始化调制信号变量
for i=1:length(msg)
if msg(i)==1
mod_signal = [mod_signal sin(2*pi*f1*t)];
else
mod_signal = [mod_signal sin(2*pi*f2*t)];
end
end
% 添加高斯白噪声
SNR = 10; %信噪比
mod_signal = awgn(mod_signal,SNR,'measured');
% 解调
demod_signal = []; % 初始化解调信号变量
for i=1:length(msg)
% 计算每个比特的能量
E1 = sum(sin(2*pi*f1*t).^2);
E2 = sum(sin(2*pi*f2*t).^2);
% 计算每个比特的相关性
C1 = sum(mod_signal((i-1)*length(t)+1:i*length(t)).*sin(2*pi*f1*t));
C2 = sum(mod_signal((i-1)*length(t)+1:i*length(t)).*sin(2*pi*f2*t));
% 判断最大相关性对应的频率
if C1/E1 > C2/E2
demod_signal = [demod_signal 1];
else
demod_signal = [demod_signal 0];
end
end
% 比较消息序列和解调信号
if isequal(msg,demod_signal)
disp('解调成功!');
else
disp('解调失败!');
end
阅读全文