MATLAB--DSP day1:

mac2025-09-19  34

函数:

1.读取wav声音文件

读取wav声音文件,并将数据返回到向量y

[y,Fs]=audioread('xxx.wav');

Fs不用设置。wav文件需要在同一文件夹下

2.显示输出

disp(y); disp('result'); disp(['tone freq = ',num2str(fc),', sampling frequency = ',num2str(Fs)]);

3.零极点

生成零极点图

zplane(b,a);

返回零点和极点

[z,p]=tf2zp(b,a);

4.幅频特性

返回有理分式表征的系统h的频谱:

[h,w]=freqz(b,a); %返回有理分式表征的系统h的频谱

绘制幅频特性:

plot(t,abs(h)); %幅度 title('Amplitude of system'); xlabel('\omega/\pi'); ylabel('Amplitude'); plot(t,angle(h)); %相位 title('Phase of system'); xlabel('\omega/\pi'); ylabel('Phase');

5.DFT

DFT逆变换:

%N:DFT的点数 %X:X(omega) x=ifft(X,N);

6.系统响应

%b1:分子系数 %a1:分母系数 impz(a1,b1,N); %系统的冲激响应 stepz(a1,b1,N); %系统的阶跃响应

算法:

1.用2个N点DFT计算2N点DFT:

知识点:圆周平移的实现,x[an]的实现

N=64; n=0:N-1; k=0:2*N-1; x=cos(14*pi*k/N)+0.5*cos(38*pi*k/N); g=cos(14*pi*2*n/N)+0.5*cos(38*pi*2*n/N); %g[n]=x[2n] h=cos(14*pi*(2*n+1)/N)+0.5*cos(38*pi*(2*n+1)/N); %g[n]=x[2n+1] X1=fft(x,2*N); G=fft(g,N); H=fft(h,N); %算法关键: for m=1:N X(m)=G(m)+exp(-1i*2*pi*(m-1)/(2*N))*H(m); end for m=(N+1):2*N %G[k]和H[k]实现一次圆周平移 X(m)=G(m-N)+exp(-1i*2*pi*(m-1)/(2*N))*H(m-N); end
最新回复(0)