我正在尝试将一个mp3文件(fs = 44.1 KHz)上采样(重采样)到48 KHz,并用matlab将其写成wav文件。
我读了文件,然后进行了FFT,但我不知道如何在频域中加零。事实上,我已经写了我自己的重采样函数,请你帮我解决上面提到的问题:
[y,Fs] = audioread('piano.mp3');
left=y(:,1); % entire rows and first column
time=(1/44100)*length(left);
t=linspace(0,time,abs(length(left)));
stem(t,abs(left));
%% fft %%
y1= fft(y(:,1));
left1=y1(:,1); % all rows and first column
time1=(1/44100)*length(left1);
t1=linspace(0,time1,abs(length(left1)));
stem(t1,abs(left1));
***%% ???? place to add zero ??***
%% fftshift(fft(x))%%
y1= fftshift(fft(y(:,1)));
left1=y1(:,1); % all rows and first column
time1=(1/44100)*length(left1);
t1=linspace(0,time1,abs(length(left1)));
plot(t,left)
发布于 2016-02-04 22:52:49
在上采样和下采样阶段之间需要一个低通滤波器,以消除否则会出现的混叠。此功能内置于matlab重采样函数中。
https://stackoverflow.com/questions/35204022
复制相似问题