[x1, fs1] = audioread('C:\Users\rqs\Desktop\我曾.mp3'); [x2, fs2] = audioread('C:\Users\rqs\Desktop\踏钹.wav'); x2 = flipud(x2); n = length(x1) + length(x2) - 1; X1 = fft(x1, n); X2 = fft(x2, n); Y = ifft(X1 .* X2); fs = fs1; sound(Y, fs); plot(Y), xlabel('t'), ylabel('振幅'), title('卷积后'); out_filename = 'C:\Users\rqs\Desktop\卷积后.wav'; audiowrite(out_filename, Y, fs)对以上代码逐句注释
时间: 2024-02-22 20:01:09 浏览: 126
测试用 audio.wav
[x1, fs1] = audioread('C:\Users\rqs\Desktop\我曾.mp3'); # 从指定路径读取mp3文件"我曾",并将音频数据存入变量x1中,采样率存入变量fs1中。
[x2, fs2] = audioread('C:\Users\rqs\Desktop\踏钹.wav'); # 从指定路径读取wav文件"踏钹",并将音频数据存入变量x2中,采样率存入变量fs2中。
x2 = flipud(x2); # 将x2沿垂直方向翻转。
n = length(x1) + length(x2) - 1; # 求出卷积后的长度,即x1和x2长度之和减一。
X1 = fft(x1, n); # 对x1做FFT,得到频域信号X1。
X2 = fft(x2, n); # 对x2做FFT,得到频域信号X2。
Y = ifft(X1 .* X2); # 对X1和X2做点乘,再做IFFT,得到卷积后的时域信号Y。
fs = fs1; # 卷积后的采样率与x1的采样率相同。
sound(Y, fs); # 播放卷积后的音频信号。
plot(Y), xlabel('t'), ylabel('振幅'), title('卷积后'); # 绘制卷积后的时域信号波形图。
out_filename = 'C:\Users\rqs\Desktop\卷积后.wav'; # 指定输出路径。
audiowrite(out_filename, Y, fs) # 将卷积后的音频信号保存为wav文件。
阅读全文