2fsk相干解调matlab
时间: 2023-07-13 10:22:57 浏览: 122
MATLAB编程实现2FSK信号的调制与解调(非相干解调)
实现2FSK相干解调的Matlab代码如下:
```matlab
% 采样频率
fs = 10000;
% 载波频率1和2
f1 = 1000;
f2 = 3000;
% 调制信号
data = [1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0];
% 调制信号对应的相位
theta1 = 0;
theta2 = pi;
% 生成调制信号
t = 0:1/fs:(length(data)/fs-1/fs);
x = zeros(1,length(t));
for i = 1:length(data)
if data(i) == 0
x((i-1)*fs+1:i*fs) = sin(2*pi*f1*t((i-1)*fs+1:i*fs)+theta1);
else
x((i-1)*fs+1:i*fs) = sin(2*pi*f2*t((i-1)*fs+1:i*fs)+theta2);
end
end
% 相干解调
fc = (f1+f2)/2;
N = floor(30/fc*fs);
n = 1:N;
y = zeros(1,length(data));
for i = 1:length(data)
z = x((i-1)*fs+1:i*fs).*cos(2*pi*fc*t((i-1)*fs+1:i*fs));
y(i) = sum(z(n))/N;
end
% 绘制解调信号图像
figure;
plot(t(1:length(data)), y);
xlabel('时间/s');
ylabel('解调信号');
```
该代码首先生成了一个2FSK调制信号,然后进行相干解调,最后绘制解调信号图像。其中,调制信号由 `data` 数组表示,调制信号对应的频率由 `f1` 和 `f2` 表示,相位由 `theta1` 和 `theta2` 表示。解调时,采用了一个周期为 $1/f_c$ 的窗口进行平均,窗口长度由 `N` 表示。
阅读全文