采用程序实现对2FSK信号调制与相干解调的仿真,并绘制基带信号、载波信号、 2FSK信号、抽样判决后波形。的matlab代码
时间: 2023-08-14 14:08:25 浏览: 167
FSK-program.zip_2FSK_2FSK包络_2FSK相干解调_fsk包络_相干解调
下面是一个简单的MATLAB代码实现对二进制数字基带信号进行2FSK调制与相干解调的仿真,并绘制基带信号、载波信号、2FSK信号和抽样判决后的波形:
```matlab
% 生成二进制数字基带信号
N = 1000; % 信号长度
data = randi([0, 1], 1, N); % 随机产生0和1
fs = 100; % 采样频率
t = 0 : 1/fs : (N-1)/fs; % 时间向量
bb = 2 * data - 1; % 将0和1映射到-1和1
% 2FSK调制
fc1 = 10; % 第一个载波频率
fc2 = 20; % 第二个载波频率
ac = 1; % 载波幅度
freq = fc1 * ones(1, N); % 初始化载波频率
freq(data == 1) = fc2; % 根据数字信号更新载波频率
ss = ac * cos(2*pi*cumsum(freq)/fs); % 2FSK调制信号
% 相干解调
m1 = ss .* cos(2*pi*fc1*t); % 第一个载波信号相乘
m2 = ss .* cos(2*pi*fc2*t); % 第二个载波信号相乘
[b, a] = butter(6, fc1/fs*2); % 设计低通滤波器
y = filter(b, a, m1-m2); % 滤波
y(data == 1) = -y(data == 1); % 判决
% 绘制波形
figure;
subplot(4,1,1);
plot(t, bb);
title('Baseband Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(4,1,2);
plot(t, ac*cos(2*pi*freq.*t));
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(4,1,3);
plot(t, ss);
title('2FSK Modulated Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
subplot(4,1,4);
plot(t, y);
title('Coherent Demodulated Signal');
xlabel('Time (s)');
ylabel('Amplitude');
ylim([-1.5, 1.5]);
```
运行代码后,会生成一个包含四个子图的图像,分别表示基带信号、载波信号、2FSK信号和相干解调后的信号。可以通过调整代码中的参数来改变信号的特性,比如信号长度、采样频率、载波频率等。需要注意的是,在这个例子中,我们使用的是抽样判决的方式进行解调,因此解调结果会有一定的误差。
阅读全文