用MATLAB写一段代码,绘制音频文件的时域图和频谱图,并放在同一张图上
时间: 2024-02-06 20:12:48 浏览: 199
好的,以下是使用MATLAB绘制音频文件的时域图和频谱图,并将它们放在同一张图上的代码:
```matlab
% 读取音频文件
[y, Fs] = audioread('audio_file.wav');
% 绘制时域图
subplot(2,1,1);
t = 0:1/Fs:(length(y)-1)/Fs;
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time Domain');
% 绘制频谱图
subplot(2,1,2);
N = length(y);
Y = fft(y);
f = Fs*(0:(N/2))/N;
P = abs(Y/N);
plot(f, P(1:N/2+1));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Frequency Domain');
% 在同一张图上显示
figure;
subplot(2,1,1);
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Time-Frequency Domain');
subplot(2,1,2);
plot(f, P(1:N/2+1));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Time-Frequency Domain');
```
在该代码中,我们首先使用`audioread`函数读取音频文件,并将其存储在`y`中,采样率存储在`Fs`中。
然后,我们使用`subplot`函数创建一个2x1的图形区域,并在第一个子图中绘制音频文件的时域图。我们使用时间向量`t`和信号向量`y`来绘制时域图。
接着,我们在第二个子图中绘制音频文件的频谱图。我们使用`fft`函数计算信号的傅里叶变换,并使用`abs`和`N`来计算幅度谱。我们使用频率向量`f`来绘制频谱图。
最后,我们使用`subplot`函数创建一个新的2x1图形区域,并在第一个子图中绘制时域图,第二个子图中绘制频谱图,从而将它们放在同一张图上。
希望这个代码可以帮到你!
阅读全文