zoro1997 2021-03-13 14:09 采纳率: 0%
浏览 209
已结题

能讲解一下窗函数设计法及滤波器设计方法(对语音信号的数字滤波和处理)吗?

窗函数设计法及滤波器设计法(对语音信号的数据滤波和处理)

由于是大二被同学带着做的所以不是很熟悉,像请大神仔细的解说一下,用来复试的问答。

首先:fft是傅里叶变换的函数吗?为什么在y1=fft()之后还要     y2=fftshift(y1);对频谱图进行平移?

fs =22050;

Nbits =16; 

[x,fs,nbits]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav');      %读声音文件

n=length(x); 

t=0:1/fs:(length(x)-1)/fs;              %求出语音信号的长度

y1=fft(x,n)                        %傅里叶变换  y2=fftshift(y1);                    %对频谱图进行平移  f=0:fs/n:fs*(n-1)/n;                 %得出频点               subplot(2,1,1); 

plot(t/2,x)      %做原始语音信号的时域图形

title('原始信号时域波形图');

subplot(2,1,2);

plot(f,abs(y2)); 

title('原始信号频谱图');

clear;               

dt=1/44100; 

fs=44100;  

[f1,fs,nbits]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav'); 

figure(1);  

subplot(1,1,1); 

N=length(f1);  

t=0:1/fs:(N-1)/fs;

plot(t,f1);     

title('信息信号的时域波形');  

fy1=fft(f1); 

w1=0:fs/(N-1):fs;

figure(2); 

subplot(1,1,1); 

plot(w1,abs(fy1)); 

title('信息信号的频谱');  //画完了

f2=cos(22000*pi*t);

figure(3); 

subplot(1,1,1); 

fy2 = fft(f2);

N2=length(f2);

w2=fs/N*[0:N-1]; 

plot(w2,abs(abs(fy2))); 

title('载波信号的频谱'); 

f1=f1(:,1);

f3=f1'.*f2;

figure(4); 

subplot(1,1,1); 

fy3 = fft(f3); 

plot(w1,abs(abs(fy3))); 

title('已调信号的频谱');

sound(f3,fs,nbits);  

f4=f3.*f2;

figure(5); 

subplot(1,1,1);

fy4=fft(f4); 

plot(w1,abs(abs(fy4)));

title('解调信号的频谱');

sound(f4,fs,nbits);  

fp1=0; 

fs1=5000; 

As1=100; 

wp1=2*pi*fp1/fs; 

ws1=2*pi*fs1/fs; 

BF1=ws1-wp1;

wc1=(wp1+ws1)/2; 

M1=ceil((As1-7.95)/(2.286*BF1))+1;

N1=M1+1; 

beta1=0.1102*(As1-8.7); 

Window=(kaiser(N1,beta1)); 

b1=fir1(M1,wc1/pi,Window);

figure(6); 

subplot(1,1,1);

freqz(b1,1,512);  

title('FIR低通滤波器的频率响应'); 

f4_low = filter(b1,1, f4);

plot(t,f4_low); 

title('滤波后的解调信号时域波形');

sound(f4_low,fs,nbits);   

f5=fft(f4_low);

figure(7); 

subplot(1,1,1);

plot(w1,abs(f5)); 

title('滤波后的解调信号频谱');

 

快放: 

[x,fs,nbits]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav')

M=2*fs; 

wavplay(x,M);

慢放: 

[x,fs,nbits]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav')

M=0.2*fs; 

wavplay(x,M);

[x1,Fs,bits]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav'); 

[y,fs]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav');

sound(y,1*fs)%回放语音信号并控制快慢

n=length(y);%选取变换的点数

y_p=fft(y,n);%对n点进行傅里叶变换到频域

f=fs*(0:n/2-1)/n;%对应点的频率

figure(1)

subplot(2,1,1);

plot(y);%语音信号的时域波形图

title('原始语音信号采样后时域波形');

xlabel('时间轴')

ylabel('幅值?A')

subplot(2,1,2);

plot(f,abs(y_p(1:n/2)));%语音信号的频谱图?

axis([0 20000 0 600]);

title('原始语音信号采样后频谱图');

xlabel('频率Hz');

ylabel('频率幅值');

%高通滤波器的创建

fp=1500;

fst=2800;

%归一化频率

wp=2*pi*fp/fs;

ws=2*pi*fst/fs;

Rp=1;%通带最大衰减系数

Rs=53;%阻带最大衰减系数

Ts=1/fs;%采样周期

m=4096;%采样点数

wp=2/Ts*tan(wp/2);%模拟通带截止频率

ws=2/Ts*tan(ws/2);%模拟阻带截止频率

[N,Wn]=buttord(wp,ws,Rp,Rs,'s');%选择模拟巴特沃斯低通滤波器的最小阶数

[z,p,k]=buttap(N);%创建巴特沃斯模拟低通滤波器

[Bp,Ap]=zp2tf(z,p,k);

[b,a]=lp2hp(Bp,Ap,Wn);

%用双线性变换法得到数字低通滤波器系数

[bz,az]=bilinear(b,a,fs);

figure(2);

freqz(bz,az,m);

title('双线性变换法得到的IIR高通滤波器');

%对音频信号进行低通滤波并输出滤波后的音频

f2=filter(bz,az,y);

figure(3)

subplot(2,1,1);

plot(y);

title('FIR低通滤波器滤波前的时域波形');

subplot(2,1,2);

plot(f2);

title('FIR低通滤波器滤波后的时域波形');

sound(f2,1*fs)

%滤波频谱的前后对比

figure(4)

subplot(2,1,1);

plot(f,abs(y_p(1:n/2)));

title('FIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F2=plot(f,abs(f2(1:n/2)));

title('FIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

[y,fs]=wavread('C:\Users\biziheng\Documents\Tencent Files\569402295\FileRecv\kesou.wav’);

sound(y,1*fs)%回放语音信号

n=length(y);%选取变换的点数

y_p=fft(y,n);%对n点进行傅里叶变换到频域

f=fs*(0:n/2-1)/n;%对应点的频率

figure(1)

subplot(2,1,1);

plot(y);%语音信号的时域波形图

title('原始语音信号采样后时域波形');

xlabel('时间轴')

ylabel('幅值A')

subplot(2,1,2);

plot(f,abs(y_p(1:n/2)));%语音信号的频谱图?

axis([0 20000 0 600]);

title('原始语音信号采样后频谱图');

xlabel('频率Hz');

ylabel('频率幅值');

%低通滤波器器的创建

wp=2*pi*1200/fs;

ws=2*pi*1800/fs;

Rp=1;

Rs=53;

wdelta=ws-wp;

N=ceil(8*pi/wdelta);%取整

wn=(wp+ws)/2;

[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率

figure(2)

freqz(b,a,512);

title('FIR低通滤波器');

%对音频信号进行低通滤波并输出滤波后的音频

f2=filter(b,a,y);

figure(3)

subplot(2,1,1);

plot(y);

title('FIR低通滤波器滤波前的时域波形');

subplot(2,1,2);

plot(f2);

title('FIR低通滤波器滤波后的时域波形');

sound(f2,1*fs)

%滤波频谱的前后对比

figure(4)

subplot(2,1,1);

plot(f,abs(y_p(1:n/2)));

title('FIR低通滤波器滤波前的频谱')

xlabel('频率/Hz');

ylabel('幅值');

subplot(2,1,2)

F2=plot(f,abs(f2(1:n/2)));

title('FIR低通滤波器滤波后的频谱')

xlabel('频率/Hz');

ylabel('幅值');

最后,我知道有标示但是希望还是再仔细说一下,谢谢。并且如果对于这个matlab复试的老师可能会问什么呢

  • 写回答

1条回答 默认 最新

  • codersnote 2021-03-14 08:21
    关注

    fftshift作用只是把频谱的坐标轴由[0,2pi)变换到[-pi,pi)显示而已,没有其他过多的作用

    窗化法设计fir滤波器,如:

    fir1(N,wn/pi,hamming(N+1)); 是设计一个低通滤波器

    第一个参数是阶数,第二个参数是截止频率,第三个参数是窗函数

    具体其他问题可私信

    望采纳

    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100