频域特征提取matlab代码
时间: 2023-08-23 08:04:47 浏览: 38
以下是一个简单的频域特征提取的 MATLAB 代码示例:
```matlab
% 读取音频文件并转换为时域信号
[y, fs] = audioread('audio.wav');
% 通过快速傅里叶变换将信号转换为频域
Y = fft(y);
% 计算信号的幅度谱
amplitude = abs(Y);
% 计算信号的相位谱
phase = angle(Y);
% 计算信号的功率谱密度
power = (1/(length(Y)))*(abs(Y).^2);
% 计算信号的频率向量
f = linspace(0, fs, length(Y));
% 提取信号的频域特征,例如频率峰值、频谱面积等等
peak_frequency = f(find(amplitude == max(amplitude)));
spectral_area = trapz(f, amplitude);
% 显示信号的幅度谱和相位谱
subplot(2,1,1);
plot(f, amplitude);
title('Amplitude Spectrum');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
subplot(2,1,2);
plot(f, phase);
title('Phase Spectrum');
xlabel('Frequency (Hz)');
ylabel('Phase (radians)');
```
这段代码读取名为"audio.wav"的音频文件,并将其转换为时域信号。然后,通过快速傅里叶变换将信号转换为频域,并计算其幅度谱、相位谱和功率谱密度。最后,使用 MATLAB 内置函数 "find" 和 "trapz" 分别提取信号的频率峰值和频谱面积,并将幅度谱和相位谱可视化。