matlab对音频信号进行采样并还原,显示出采样前和采样后的波形
时间: 2023-06-18 18:05:54 浏览: 894
对音频信号进行采样并还原的过程可以分为以下几步:
1.读取音频文件并绘制原始波形
```
% 读取音频文件
[y, Fs] = audioread('audio.wav');
% 绘制原始波形
t = (0:length(y)-1)/Fs; % 时间轴
figure;
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Waveform');
```
2.对音频信号进行采样
```
% 设置采样率
Fs_new = 8000;
% 对音频信号进行采样
y_sampled = downsample(y, Fs/Fs_new);
% 重新计算时间轴
t_new = (0:length(y_sampled)-1)/Fs_new;
% 绘制采样后的波形
figure;
plot(t_new, y_sampled);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sampled Waveform');
```
3.对采样后的信号进行还原
```
% 对采样后的信号进行插值
y_reconstructed = resample(y_sampled, Fs, Fs_new);
% 绘制还原后的波形
figure;
plot(t, y, t, y_reconstructed);
xlabel('Time (s)');
ylabel('Amplitude');
title('Reconstructed Waveform');
legend('Original', 'Reconstructed');
```
完整的代码如下:
```
% 读取音频文件
[y, Fs] = audioread('audio.wav');
% 绘制原始波形
t = (0:length(y)-1)/Fs; % 时间轴
figure;
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Waveform');
% 设置采样率
Fs_new = 8000;
% 对音频信号进行采样
y_sampled = downsample(y, Fs/Fs_new);
% 重新计算时间轴
t_new = (0:length(y_sampled)-1)/Fs_new;
% 绘制采样后的波形
figure;
plot(t_new, y_sampled);
xlabel('Time (s)');
ylabel('Amplitude');
title('Sampled Waveform');
% 对采样后的信号进行插值
y_reconstructed = resample(y_sampled, Fs, Fs_new);
% 绘制还原后的波形
figure;
plot(t, y, t, y_reconstructed);
xlabel('Time (s)');
ylabel('Amplitude');
title('Reconstructed Waveform');
legend('Original', 'Reconstructed');
```
阅读全文