matlab fsk解调调制画图
时间: 2023-10-16 22:07:12 浏览: 44
以下是 Matlab 中 FSK 解调调制的画图代码:
```matlab
% 设置参数
fs = 1000; % 采样率
fc1 = 100; % 第一个载波频率
fc2 = 200; % 第二个载波频率
Tb = 1; % 每个比特的时间长度
N = 100; % 每个比特的采样点数
L = 10; % 发送的比特数
% 生成发送信号
bits = randi([0,1],1,L); % 随机生成 L 个比特
t = linspace(0,Tb,N); % 生成每个比特的时间序列
s1 = sin(2*pi*fc1*t); % 第一个载波信号
s2 = sin(2*pi*fc2*t); % 第二个载波信号
s = zeros(1,L*N); % 初始化发送信号
for i = 1:L
if bits(i) == 0
s((i-1)*N+1:i*N) = s1;
else
s((i-1)*N+1:i*N) = s2;
end
end
% 加入高斯白噪声
SNR = 10; % 信噪比
Psignal = var(s); % 信号功率
Pnoise = Psignal / (10^(SNR/10)); % 噪声功率
noise = sqrt(Pnoise) * randn(1,length(s)); % 高斯白噪声
r = s + noise; % 接收信号
% 解调
f1 = fft(r.*s1); % 第一个载波频谱
f2 = fft(r.*s2); % 第二个载波频谱
[~,idx1] = max(abs(f1)); % 第一个载波频率的索引
[~,idx2] = max(abs(f2)); % 第二个载波频率的索引
bits_hat = zeros(1,L); % 初始化解调后的比特序列
for i = 1:L
if abs(f1((i-1)*N+idx1)) > abs(f2((i-1)*N+idx2))
bits_hat(i) = 0;
else
bits_hat(i) = 1;
end
end
% 绘制图形
figure;
subplot(3,1,1);
plot(s);
title('发送信号');
subplot(3,1,2);
plot(r);
title('接收信号');
subplot(3,1,3);
stem(bits_hat);
title('解调后的比特序列');
```