2fsk调制解调matlab代码
时间: 2023-11-18 20:06:01 浏览: 51
以下是2FSK调制解调的MATLAB代码:
% 2FSK调制
fc = 1000; %载波频率
fs = 10000; %采样频率
T = 1/fs; %采样时间间隔
t = 0:T:1-T; %时间序列
f1 = 2000; %数字信息“1”对应的频率
f2 = 4000; %数字信息“0”对应的频率
a = [1 0 1 1 0 1 0 0]; %数字信息序列
s = zeros(1,length(t)); %初始化调制信号
for i = 1:length(a)
if a(i) == 1
s((i-1)*fs/f1+1:i*fs/f1) = sin(2*pi*f1*t((i-1)*fs/f1+1:i*fs/f1));
else
s((i-1)*fs/f2+1:i*fs/f2) = sin(2*pi*f2*t((i-1)*fs/f2+1:i*fs/f2));
end
end
c = sin(2*pi*fc*t); %载波信号
x = s.*c; %调制信号
subplot(3,1,1);
plot(t,s);
title('数字信息信号');
subplot(3,1,2);
plot(t,c);
title('载波信号');
subplot(3,1,3);
plot(t,x);
title('2FSK调制信号');
% 2FSK解调
y = x.*c; %解调信号
[b,a] = butter(6,2*pi*(f2-f1)/fs); %设计带通滤波器
z = filter(b,a,y); %滤波
figure;
subplot(3,1,1);
plot(t,x);
title('2FSK调制信号');
subplot(3,1,2);
plot(t,y);
title('2FSK解调信号');
subplot(3,1,3);
plot(t,z);
title('2FSK解调后的数字信息信号');
其中,a为数字信息序列,fc为载波频率,fs为采样频率,f1和f2分别为数字信息“1”和“0”对应的频率。代码中使用了带通滤波器对解调信号进行滤波,得到数字信息序列。