利用matlab读取wav文件,在时域上进行针对频率压缩和扩展 并作图
时间: 2024-09-22 22:07:40 浏览: 113
在MATLAB中,你可以使用`audioread`函数来读取WAV文件,并使用信号处理工具箱的功能对音频数据进行频域变换,如频率压缩和扩展。以下是一个简化的步骤:
1. **读取wav文件**:
```matlab
[signal, fs] = audioread('your_wav_file.wav'); % 替换为你的wav文件路径,fs是采样率
```
2. **显示原始信号时域波形**:
```matlab
t = (0:length(signal)-1)'/fs; % 创建时间轴
plot(t, signal);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
```
3. **进行频率压缩(如低通滤波)**:
```matlab
cutoff_freq = 500; % 设定截止频率
[b, a] = butter(4, cutoff_freq/(fs/2), 'low'); % 设计低通滤波器
compressed_signal = filter(b, a, signal);
```
4. **进行频率扩展(如高通滤波)**:
```matlab
high_pass_cutoff_freq = fs/2 - 1000; % 设定高频截止频率
[b, a] = butter(4, high_pass_cutoff_freq/(fs/2), 'high'); % 高通滤波器设计
extended_signal = filter(b, a, signal);
```
5. **绘制压缩和扩展后的信号波形**:
```matlab
figure;
subplot(2, 1, 1);
plot(t, compressed_signal);
title('Compressed Signal');
subplot(2, 1, 2);
plot(t, extended_signal);
title('Extended Signal');
```
请注意,以上代码示例基于简单的线性滤波器设计。实际应用中,你可能需要调整滤波器参数、使用更复杂的变换方法,或者使用数字信号处理库(如Audio Toolbox)提供的高级功能。
阅读全文