matlab2018 2FSK时频分析程序
时间: 2023-09-06 12:11:00 浏览: 69
以下是一个简单的 MATLAB 2018 2FSK 时频分析程序,其中使用了 STFT(短时傅里叶变换)和 Hilbert 变换。
```matlab
%% 2FSK 时频分析程序
clc;
clear;
%% 读取信号
[data, fs] = audioread('2fsk_signal.wav');
%% 参数设置
f1 = 1200; % 第一个频率
f2 = 2200; % 第二个频率
fsk_dev = f2-f1; % 频率偏移量
t = 0:1/fs:(length(data)-1)/fs; % 时间轴
win = 1024; % 窗口大小
noverlap = 512; % 重叠大小
nfft = 1024; % FFT点数
%% STFT
[S, f, t] = spectrogram(data, win, noverlap, nfft, fs);
%% Hilbert变换
S_h = hilbert(S);
%% 包络检测
env = abs(S_h);
%% 包络检测结果绘图
figure;
surf(t, f, env);
shading interp;
axis tight;
view(2);
set(gca, 'YDir', 'normal');
xlabel('Time (s)');
ylabel('Frequency (Hz)');
title('2FSK Signal Envelope');
%% 解调
f_inst = (fsk_dev/(2*pi)) * angle(S_h./(abs(S_h)+eps));
f_inst = medfilt2(f_inst, [3 3]); % 中值滤波
%% 解调结果绘图
figure;
surf(t, f, f_inst);
shading interp;
axis tight;
view(2);
set(gca, 'YDir', 'normal');
xlabel('Time (s)');
ylabel('Frequency (Hz)');
title('2FSK Signal Instantaneous Frequency');
%% 频谱绘图
figure;
plot(f, abs(S(:, 1:100:end)));
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('2FSK Signal Spectrum');
```
请注意,上述程序仅适用于特定的信号和参数设置,并且可能需要进行一些修改才能适用于您的应用程序。