matlab产生2fsk信号并画出所有过程图像的代码
时间: 2023-12-12 14:58:27 浏览: 116
以下是 MATLAB 产生 2FSK 信号并绘制所有过程图像的代码示例:
```matlab
%% 2FSK信号产生与过程图像绘制
clc; clear; close all;
%% 参数设置
Fs = 4000; % 采样率
f1 = 100; % 低频信号频率
f2 = 400; % 高频信号频率
A1 = 1; % 低频信号振幅
A2 = 2; % 高频信号振幅
L = 100; % 数据序列长度
Rb = 1000; % 比特率
fb = Rb*2; % 符号率
M = 2; % 调制方式
BW = fb*(1+1/M); % 带宽
T = 1/Rb; % 一个比特时间长度
t = 0:1/Fs:L*T-1/Fs; % 时间序列
%% 信号产生
data = [1 0 1 1 0 1 0 0 1 0]; % 待调制的数据序列
dataLen = length(data); % 数据序列长度
% 将二进制数字串变成符号串
symbols = 2*data-1; % BPSK调制
% 低频信号
signal1 = A1*sin(2*pi*f1*t);
% 高频信号
signal2 = A2*sin(2*pi*f2*t);
% 带通滤波器
h=fir1(100, BW/Fs);
% 调制后的信号
fskSignal = real(symbols(1))*signal1 + real(symbols(2))*signal2;
% 通过滤波器
filterSignal = filter(h, 1, fskSignal);
%% 绘制信号与频谱图
% 时域图像
figure(1);
subplot(3,1,1);
plot(t, fskSignal);
xlabel('Time(s)');
ylabel('Amplitude');
title('2FSK Modulated signal');
subplot(3,1,2);
plot(t, filterSignal);
xlabel('Time(s)');
ylabel('Amplitude');
title('Filtered signal');
% 频域图像
L_filterSignal=length(filterSignal);
subplot(3,1,3);
freq_signal=fs/(L_filterSignal-1)*(0:L_filterSignal-1);
FFT_filterSignal=abs(fft(filterSignal,L_filterSignal));
plot(freq_signal,FFT_filterSignal);
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('Spectrum of the filtered signal');
```
运行上述代码后,即可得到 2FSK 调制信号的时域图像和频谱图像。
阅读全文