基于MATLAB的声音信号频谱分析请写出具体代码
时间: 2023-08-04 16:09:18 浏览: 115
基于MATLAB的声音信号频谱分析仪源代码
5星 · 资源好评率100%
以下是一个基于MATLAB的声音信号频谱分析的代码示例:
```matlab
% 读取音频文件
filename = 'audio.wav';
[x, fs] = audioread(filename);
% 选择一段音频进行频谱分析
start_time = 1; % 开始时间(秒)
end_time = 2; % 结束时间(秒)
start_sample = round(start_time * fs); % 转换为样本数
end_sample = round(end_time * fs);
x = x(start_sample:end_sample);
% 计算频谱
win = hamming(length(x)); % 窗函数选择汉明窗
nfft = 1024; % FFT点数,即频域分辨率
spect = fft(x.*win, nfft); % 进行FFT
spect = abs(spect(1:nfft/2+1)); % 取正频率部分
spect = 20*log10(spect/max(spect)); % 转换为dB
% 绘制频谱图
freq = (0:nfft/2)*fs/nfft; % 频率轴
plot(freq, spect);
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
title('Spectrum Analysis of Audio Signal');
```
需要注意的是,该代码只对音频文件的一小段进行了频谱分析,如果要对整个音频文件进行分析,需要在代码中添加相应的修改。
阅读全文