精华内容
下载资源
问答
  • matlab巴特沃斯滤波器用法

    万次阅读 2019-05-30 18:25:25
    基于matlab 的数字滤波器 clear clc fs = 22050; wp=0.1*pi;%通带截止频率 ws=0.4*pi;%阻带截止频率 Rp=3;%通带衰减率 Rs=75;%阻带衰减率 Fs=22050; Ts=1/Fs; wp1=2/Ts*tan(wp/2); ...

    基于matlab 的数字滤波器

    
    
    clear
    clc
    fs = 22050;
    wp=0.1*pi;%通带截止频率
    ws=0.4*pi;%阻带截止频率
    Rp=3;%通带衰减率
    Rs=75;%阻带衰减率
    Fs=22050;
    Ts=1/Fs;
    wp1=2/Ts*tan(wp/2);                 %将模拟指标转换成数字指标
    ws1=2/Ts*tan(ws/2); 
    [N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');  %选择滤波器的最小阶数,求出3db的截止频率
    [Z,P,K]=buttap(N);                  %创建butterworth模拟滤波器,零点,极点,增益
    [Bap,Aap]=zp2tf(Z,P,K);
    [b,a]=lp2lp(Bap,Aap,Wn);   
    [bd,ad]=bilinear(b,a,Fs);      %用双线性变换法实现模拟滤波器到数字滤波器的转换
    [h,w]=freqz(bd,ad); 
    figure(1)
    subplot(111);
    plot(w*fs/(2*pi),abs(h))
    grid;
    title('滤波器的性能分析'); 
    figure(2)
    [x,fs]=audioread('wslhjz.wav');
    n=length(x);
    f=fs*(0:fix(n/2-1))/n;%归一化
    X=fft(x);
    z=filter(bd,ad,x);
    subplot(211);
    plot(x);
    title('原始信号的波形');
    subplot(212);
    plot(z);
    title('滤波后信号的波形'); 
    figure(3)
    sound(z,fs);
    subplot(211);
    plot(f,abs(X(1:fix(n/2))));
    title('原始信号的频谱');
    xlabel('Hz');
    Z=fft(z);
    subplot(212);
    plot(f,abs(Z(1:fix(n/2)))); 
    title('滤波后的信号频谱');
    xlabel('Hz');
    
    
    
    展开全文
  • Matlab滤波器常用命令

    千次阅读 2018-12-10 17:19:57
    在命令行中输入: designfilt 然后就会弹出滤波器的种类,选定后会让你...[x,Fs]=audioread('C:\Users\16000\Desktop\testfile.wav'); %x是一个序列 %Fs是这个音频的采样率 %复制过来的滤波器% High_Filt=designfi...

    在命令行中输入:

    designfilt
    

    然后就会弹出滤波器的种类,选定后会让你填参数。
    参数填好之后点确定,会在命令行窗口生成这个滤波器,复制到编辑器里直接用就好。

    %读取音频文件%
    [x,Fs]=audioread('C:\Users\16000\Desktop\testfile.wav');
    %x是一个序列
    %Fs是这个音频的采样率
    %复制过来的滤波器%
    High_Filt=designfilt('highpassfir', 'StopbandFrequency', 500, 'PassbandFrequency', 600, 'StopbandAttenuation', 60, 'PassbandRipple', 1, 'SampleRate', 48000);
    
    %改成单声道%
    x=x(:,1);
    %滤波操作%
    y_1 = filter(High_Filt,x);
    
    sigLength=length(y_1); 
    t=(0:length(y_1)-1)/Fs; %时间轴
    subplot(2,1,1);
    plot(t,y_1);xlabel('Time(s)');%在第一个窗口画波形
    grid on;
    
    

    使用designfilt方法的好处是自动生成,而且不用在filter命令里那里给滤波器填参数。

    %部分重要参数说明%
    Fs=Sample Rate;
    Passband frequency是滤波器起始点
    Stopband frequency是滤波器结束点
    例如,Passband=400;Stopband=500的highpassfir就是说在400Hz到500Hz之间把波滤干净。
    

    最后总结一下:

    1. 在命令行中输入designfilt;
    2. 设置好后将生成的代码复制进编辑器区域;
    3. 使用audioread(‘路径’)读入音频,拿到信号x和采样率Fs;
    4. y=Filter(‘滤波器名称’,x);
    5. 画图

    一些其他看起来有点复杂的东西:

    help filterDesigner		%滤波器涉及图形化界面
    help butter	%butterworth滤波器
    
    展开全文
  • 摘要一、引言二、正文 1....通过计算机作图,采样,我们可以更加直观的了解语音信号的性质,通过matlab编程,调用相关的函数,我们可以非常方便的对信号进行运算和处理。二、正文2.1 设计要求在有噪音的环境中...

    摘要

    一、引言

    二、正文

    1.设计要求

    2.设计步骤

    3.设计内容

    4.简易GUI设计

    三、结论

    四、收获与心得

    五、附录

    一、引言

    随着Matlab仿真技术的推广,我们可以在计算机上对声音信号进行处理,甚至是模拟。通过计算机作图,采样,我们可以更加直观的了解语音信号的性质,通过matlab编程,调用相关的函数,我们可以非常方便的对信号进行运算和处理。


    二、正文

    2.1 设计要求

    在有噪音的环境中录制语音,并设计滤波器去除噪声。

    2.2 设计步骤

    1. 分析原始信号,画出原始信号频谱图及时频图,确定滤波器类型及相关指标 ;
    2. 按照类型及指标要求设计出滤波器,画出滤波器幅度和相位响应,分析该滤波器是否符合要求;
    3. 用所设计的滤波器对原始信号进行滤波处理,画出滤波后信号的频谱图及时频图;
    4. 对滤波前的信号进行分析比对,评估所设计滤波器性能。

    2.3 设计内容

    1.原始信号分析

    v2-b8df59bf2c7e38ed94238cb4cc63b54b_b.jpg

    v2-29069513f0ce2d564d64eba58d304125_b.jpg

    v2-98b04c1a226c3ee4ed83173fd994cf17_b.jpg

    分析信号的谱图可知,噪音在1650HZ和3300HZ附近的能量较高,而人声的能量基本位于1000HZ以下。因此,可以设计低通滤波器对信号进行去噪处理。

    2.IIR滤波器设计

    用双线性变换法分别设计了巴特沃斯低通滤波器和椭圆低通滤波器和带阻滤波器:

    ①巴特沃斯滤波器

    fp=800;fs=1300;rs=35;rp=0.5;

    程序代码如下:

    fp=800;fs=1300;rs=35;rp=0.5;Fs=44100;

    wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=buttord(wp,ws,rp,rs,'s');

    [b,a]=butter(n,wn,'s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);


    v2-948a2a76f13ade9c59a52f10573fc3a0_b.jpg

    v2-1a42726d8abe733f4f31f8899ede3884_b.jpg

    v2-a6e52e146ac9397991ea1125c1acb019_b.jpg



    ②椭圆低通滤波器

    fp=1300;fs=1600;rs=60;rp=0.5;

    程序代码如下:

    fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100;

    wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=ellipord(wp,ws,rp,rs,'s');

    [b,a]=ellip(n,rp,rs,wn,'s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);



    v2-1f7ff18cd2a6711245eb8a9ec03173d8_b.jpg

    v2-75c9db3a70ff317d7582020485d6500b_b.jpg

    v2-c95c2d6b5e9827da388c235e1027a47a_b.jpg


    ③带阻滤波器

    fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6

    fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6

    程序代码如下:

    fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6;Fs=44100;

    fp=[fp1,fp2];fs=[fs1,fs2];

    wp=2*Fs*tan(2*pi*fp/(2*Fs));

    ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=buttord(wp,ws,rp,rs,'s');

    [b,a]=butter(n,wn,'stop','s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);

    fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6;Fs=44100;

    fp1=[fp3,fp4];fs1=[fs3,fs4];

    wp1=2*Fs*tan(2*pi*fp1/(2*Fs));

    ws1=2*Fs*tan(2*pi*fs1/(2*Fs));

    [n1,wn1]=buttord(wp1,ws1,rp,rs,'s');

    [b1,a1]=butter(n1,wn1,'stop','s');

    [num1,den1]=bilinear(b1,a1,Fs);

    [h1,w1]=freqz(num1,den1,512,Fs);


    v2-9e66281905d0ce4e01340fb0fc8da927_b.jpg

    v2-b8b3417457af27b9f7aa7f6471462a46_b.jpg

    v2-bfcaa49456cd6b4b4a5225f9725dd06f_b.jpg

    v2-46c39e48ac46dac988cd4233bbb45a0b_b.jpg

    v2-74127928ac218362287fc477092fc1ee_b.jpg

    v2-2b2093f09f20da0b9ea2d2b5ec91ba0f_b.jpg



    1. FIR滤波器

    ①加hamming窗

    n=100;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),Hamming(n+1));

    [h,w]=freqz(b,1,512,Fs);


    v2-304c438513a2b8fd1cf2bd15b5e43eb3_b.jpg

    v2-17b330d09d4f5fac4f16ca833ae2550a_b.jpg

    v2-6212cd3664f980d5fcc8e6789f9ad6ae_b.jpg


    ②加hanning窗

    n=;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),Hanning(n+1));

    [h,w]=freqz(b,1,512,Fs);


    v2-10504379703cb6c9427465850fca99e2_b.jpg

    v2-4a0931a0352b73d53b5ccd84133206d0_b.jpg

    v2-f60f0b819883aa245d6b05a3037b36eb_b.jpg



    ③加blackman窗

    n=100;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),blackman(n+1));

    [h,w]=freqz(b,1,512,Fs);


    v2-5100fc4a1e7863429e92360844decb08_b.jpg

    v2-7a20a386fc9a173f910a598caa9ac17e_b.jpg

    v2-1cb275c8240342da27f79d69325768cf_b.jpg



    1. 滤波前后比对

    ①巴特沃斯低通滤波器滤波后

    v2-77b81e7a21212a013c3ac7688cef8b2c_b.jpg

    v2-22a66c4065646cc1e312d1e0d03d4e76_b.jpg

    v2-c298b597751aab6944105a4bdf8ac973_b.jpg


    ②椭圆低通滤波器滤波后


    v2-5f6744dd08a1c31f00aa4083d48234a2_b.jpg

    v2-daedce6b901d69dc1a3ad6fbb6f42918_b.jpg

    v2-f33db7bbd206305a43b9fde87738bcb8_b.jpg

    ③带阻滤波器

    v2-3cb8dfaa1db05748a5c9fa31d2bcf54c_b.jpg

    v2-37483a816cf346fcb409561859c33db7_b.jpg

    v2-3a2e6e238d7652b40cc9efceae8e0bee_b.jpg

    ④加hamming窗


    v2-024ae9d03c24c773e84526e3ecf4ef36_b.jpg


    ⑤加hanning窗


    v2-0e453915e1886405f9862bef70843b97_b.jpg


    ⑥加blackman窗


    v2-5591b24a4a1fbe811d7d047478798cab_b.jpg


    2.4简易GUI界面设计

    为了便于操作和演示,设计了如下的简易GUI界面。


    v2-33299d408ed49517052af945c30b788f_b.jpg



    v2-df51a775b7dbf8e6f0b183a0a05ed752_b.jpg



    1. 结论

    由以上谱图分析可知,经过滤波器滤波后,信号中的高频杂音明显被抑制,而人声成分大部分被保留,起到了预期的滤波作用。

    对比所设计的两种滤波器,椭圆滤波器在过渡带相对较窄的情况下,能满足相对较高阻带衰减。

    四、收获与心得

    本次设计大概进行了五周的时间,语音信号处理的是目前比较流行且十分有趣的,在编程实现的过程中还是遇到了很多困难。在前期的准备工作中,查阅了大量资料,以完善我们的理论知识。我们为了完成本次设计,我们通过查阅相关书籍以及matlab中的帮助,选用不同的matlab函数,尝试不同的参数。经过接近一个礼拜的反复调试,最终基本的实现了设计任务。

    虽然遇到了很多困难,但是我们在设计过程中都有收获很大。本次设计将信号与系统课上学习的知识用于实践,让我们对对语音信号处理更深入的了解,也让我们加深了对滤波器相关内容的理解,同时也使得我们的Matlab能力有了很大的提高。





    参考文献

    《应用matlab实现信号分析和处理》 科学出版社

    附录

    1 巴特沃斯低通滤波器

    fp=800;fs=1300;rs=35;rp=0.5;Fs=44100;

    wp=2*Fs*tan(2*pi*fp/(2*Fs));

    ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=buttord(wp,ws,rp,rs,'s');

    [b,a]=butter(n,wn,'s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);

    figure(1)

    %subplot(3,1,1)

    plot(w,abs(h));

    xlabel('频率/Hz');ylabel('幅值');

    title('巴特沃斯低通滤波器幅度特性');

    axis([0,5000,0,1.2])

    grid on;

    figure(2)

    %subplot(3,1,2)

    plot(w,20*log10(abs(h)));

    xlabel('频率/Hz');ylabel('幅值db');

    title('巴特沃斯低通滤波器幅度特性db');

    axis([0,5000,-90,10]);

    grid on;

    figure(3)

    plot(w,180/pi*unwrap(angle(h)));

    xlabel('频率/Hz');ylabel('相位');

    title('巴特沃斯低通滤波器相位特性');

    axis([0,5000,-1000,10])

    grid on;

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);sound(x1,Fs,bits);

    N1=length(x1);

    Y1=fft(x1,N1);

    f1=Fs*(0:N1-1)/N1;

    t1=(0:N1-1)/Fs;

    figure(4)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    y=filter(num,den,x1);

    sound(y,Fs,bits);

    N2=length(y);

    Y2=fft(y,N2);

    f2=Fs*(0:N2-1)/N2;

    t2=(0:N2-1)/Fs;

    figure(5)

    plot(f2,abs(Y2))

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])


    2椭圆低通滤波器


    fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100;

    wp=2*Fs*tan(2*pi*fp/(2*Fs));

    ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=ellipord(wp,ws,rp,rs,'s');

    [b,a]=ellip(n,rp,rs,wn,'s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);

    figure(1)

    plot(w,abs(h));

    xlabel('频率/Hz');ylabel('幅值');

    title('椭圆低通滤波器幅度特性');

    axis([0,5000,0,1.2])

    grid on;

    figure(2)

    plot(w,20*log10(abs(h)));

    xlabel('频率/Hz');ylabel('幅值db');

    title('椭圆低通滤波器幅度特性db');

    axis([0,5000,-90,10]);

    grid on;

    figure(3)

    plot(w,180/pi*unwrap(angle(h)));

    xlabel('频率/Hz');ylabel('相位');

    title('椭圆低通滤波器相位特性');

    axis([0,5000,-1000,10])

    grid on;

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);sound(x1,Fs,bits);

    N1=length(x1);

    Y1=fft(x1,N1); %对信号做N点FFT变换

    f1=Fs*(0:N1-1)/N1;

    t1=(0:N1-1)/Fs;

    figure(4)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    y=filter(num,den,x1);

    sound(y,Fs,bits);

    N2=length(y);

    Y2=fft(y,N2); %对信号做N点FFT变换

    f2=Fs*(0:N2-1)/N2;

    t2=(0:N2-1)/Fs;

    figure(5)

    plot(f2,abs(Y2))

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])



    3.带阻滤波器

    fp1=800;fp2=2300;fs1=1300;fs2=1800;rs=30;rp=0.6;Fs=44100;

    fp=[fp1,fp2];fs=[fs1,fs2];

    wp=2*Fs*tan(2*pi*fp/(2*Fs));

    ws=2*Fs*tan(2*pi*fs/(2*Fs));%wap=2*tan(wp/2)/Ts

    [n,wn]=buttord(wp,ws,rp,rs,'s');

    [b,a]=butter(n,wn,'stop','s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);

    fp3=2800;fp4=4000;fs3=3200;fs4=3700;rs=30;rp=0.6;Fs=44100;

    fp1=[fp3,fp4];fs1=[fs3,fs4];

    wp1=2*Fs*tan(2*pi*fp1/(2*Fs));

    ws1=2*Fs*tan(2*pi*fs1/(2*Fs));%wap=2*tan(wp/2)/Ts

    [n1,wn1]=buttord(wp1,ws1,rp,rs,'s');

    [b1,a1]=butter(n1,wn1,'stop','s');

    [num1,den1]=bilinear(b1,a1,Fs);

    [h1,w1]=freqz(num1,den1,512,Fs);

    figure(1)

    plot(w,abs(h));

    xlabel('频率/Hz');ylabel('幅值');

    title('巴特沃斯带阻滤波器幅度特性');

    axis([0,5000,0,1.2])

    grid on;

    figure(2)

    plot(w,20*log10(abs(h)));

    xlabel('频率/Hz');ylabel('幅值db');

    title('巴特沃斯带阻滤波器幅度特性db');

    axis([0,5000,-90,10]);

    grid on;

    figure(3)

    plot(w,180/pi*unwrap(angle(h)));

    xlabel('频率/Hz');ylabel('相位');

    title('巴特沃斯带阻滤波器相位特性');

    axis([0,5000,-1000,10])

    grid on;

    figure(4)

    plot(w1,abs(h1));

    xlabel('频率/Hz');ylabel('幅值');

    title('巴特沃斯带阻滤波器幅度特性');

    axis([0,5000,0,1.2])

    grid on;

    figure(5)

    plot(w1,20*log10(abs(h1)));

    xlabel('频率/Hz');ylabel('幅值db');

    title('巴特沃斯带阻滤波器幅度特性db');

    axis([0,5000,-90,10]);

    grid on;

    figure(6)

    plot(w1,180/pi*unwrap(angle(h1)));

    xlabel('频率/Hz');ylabel('相位');

    title('巴特沃斯带阻滤波器相位特性');

    axis([0,5000,-1000,10])

    grid on;

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);sound(x1,Fs,bits);

    N1=length(x1);

    Y1=fft(x1,N1); %对信号做N点FFT变换

    f1=Fs*(0:N1-1)/N1;

    t1=(0:N1-1)/Fs;

    figure(7)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    y1=filter(num,den,x1);

    y=filter(num1,den1,y1);

    sound(y,Fs,bits);

    N2=length(y);

    Y2=fft(y,N2);

    f2=Fs*(0:N2-1)/N2;

    t2=(0:N2-1)/Fs;

    figure(8)

    plot(f2,abs(Y2))

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])


    1. 加hamming窗

    n=100;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),Hamming(n+1));

    [h,w]=freqz(b,1,512,Fs);

    a=num2str(a);

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);

    sound(x1,Fs,bits);

    N1=length(x1);

    Y1=fft(x1,N1);

    f1=Fs*(0:N1-1)/N1;

    y=fftfilt(b,x1);

    sound(y,Fs,bits);

    Y2=fft(y,N2);

    f2=Fs*(0:N2-1)/N2;

    figure(4)

    subplot(2,1,1)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    subplot(2,1,2)

    plot(f2,abs(Y2));

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])


    1. 加hanning窗

    n=100;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),Hanning(n+1));

    [h,w]=freqz(b,1,512,Fs);

    a=num2str(a);

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);

    N1=length(x1);

    Y1=fft(x1,N1);

    f1=Fs*(0:N1-1)/N1;

    y=fftfilt(b,x1);

    sound(y,Fs,bits);

    N2=length(y);

    Y2=fft(y,N2);

    f2=Fs*(0:N2-1)/N2;

    figure(4)

    subplot(2,1,1)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    subplot(2,1,2)

    plot(f2,abs(Y2));

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])


    1. 加blackman窗

    n=100;fp=1000;Fs=44100;

    b=fir1(n,fp/(Fs/2),blackman(n+1));

    [h,w]=freqz(b,1,512,Fs);

    a=num2str(a);

    [s1,Fs,bits]=wavread('D:\222.wav');

    x1=s1(:,1);

    sound(x1,Fs,bits);

    N1=length(x1);

    Y1=fft(x1,N1);

    f1=Fs*(0:N1-1)/N1;

    y=fftfilt(b,x1);

    sound(y,Fs,bits);

    N2=length(y);

    f2=Fs*(0:N2-1)/N2;

    figure(4)

    subplot(2,1,1)

    plot(f1,abs(Y1))

    xlabel('频率/Hz');ylabel('幅度');

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

    grid on;axis([0 6000 0 400])

    subplot(2,1,2)

    plot(f2,abs(Y2));

    xlabel('频率/Hz');ylabel('幅度');

    title('过滤后信号的频谱');

    grid on;axis([0 6000 0 100])


    7.巴特沃斯低通滤波时频分析


    clear

    Fs=44100;

    [s1,Fs,bits]=wavread('D:\222.wav');

    x=s1(:,1);x1=x(40001:64576)

    l=length(x1);

    N=6;

    m=downsample(x1,N);%降抽样后 Fs=7350hz

    z=length(m);%4096

    [tfr, t, f] = tfrstft(m);

    figure(13)

    contour(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);

    xlabel('时间t');

    ylabel('频率f');

    title('等高线图(滤波前)');

    grid on;

    figure(14)

    mesh(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);

    xlabel('时间t');

    ylabel('频率f');

    zlabel('幅值A');

    title('三维图(滤波前)');

    grid on;

    fp=1300;fs=1600;rs=60;rp=0.5;Fs=44100;

    wp=2*Fs*tan(2*pi*fp/(2*Fs));ws=2*Fs*tan(2*pi*fs/(2*Fs));

    [n,wn]=ellipord(wp,ws,rp,rs,'s');

    [b,a]=ellip(n,rp,rs,wn,'s');

    [num,den]=bilinear(b,a,Fs);

    [h,w]=freqz(num,den,512,Fs);

    y=filter(num,den,x);

    x1=y(40001:64576)

    l=length(x1);

    N=6;

    m=downsample(x1,N);%降抽样后 Fs=7350hz

    z=length(m);%4096

    [tfr,t,f] = tfrstft(m);

    figure(15)

    contour(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);

    xlabel('时间t');

    ylabel('频率f');

    title('等高线图(滤波后)');

    grid on;

    figure(16)

    mesh(t,(Fs/N)*(0:z/2-1)/z,abs(tfr(1:z/2,:)).^2);

    xlabel('时间t');

    ylabel('频率f');

    zlabel('幅值A');

    title('三维图(滤波后)');

    grid on;

    展开全文
  • Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码) FIR滤波器的优缺点 优点:相位线性度好,处理速度快,没有反馈回路稳定性强于IIR。 缺点:FIR幅频特性精度较之于IIR低 IIR滤波器 优点:相同阶数下IIR滤波效果...

    Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)

    FIR滤波器的优缺点
    优点:相位线性度好,处理速度快,没有反馈回路稳定性强于IIR。
    缺点:FIR幅频特性精度较之于IIR低
    IIR滤波器
    优点:相同阶数下IIR滤波效果更好
    缺点:相位非线性程度较高,矫正时需要双向滤波进行矫正,不易控制。
    FIR滤波器最关键的在于窗函数:这里介绍
    汉明窗:
    FIR——Hamming窗

    1. 较低的旁瓣幅度,尤其是第一旁瓣;
    2. 旁瓣幅度要下降得快,以利于增加阻带衰减;
    3. 主瓣宽度要窄,这样滤波器过渡带较窄。
      N=40
      泄露系数0.04%,相对旁瓣抑制-42.1dB,主瓣宽度0.0625 (归一化后的频率)
      在这里插入图片描述
      N越大,计算时间越长,群时延越长。取N=40(根据不同的情况,滤波器阶数可以取不同的值,这里我们对一段特定的音频信号进行滤波,因此取40)
      N越大,计算时间越长,群时延越长。取N=40

    在这里插入图片描述
    滤波结果展示:
    在这里插入图片描述
    蓝色为滤波前信号;红色为FIR滤波后的信号
    利用IIR椭圆滤波器对音频信号进行滤波:
    在这里插入图片描述
    滤波结果展示:在这里插入图片描述
    直接对歌曲进行IIR_ Eliptic(椭圆)滤波
    FIR滤波(黄色),IIR滤波后(紫色)
    对于不同的音频信号,对原始频谱进行分析后,只需要改动滤波器的设计参数,即可实现数字滤波。
    下面请看代码:

    [x,fs]=audioread('C:\Users\a\Desktop\大三上\精密仪器\讨论课题目\新闻(加噪声).wav');
    n=length(x);
      y=fft(x,n);       %做FFT变换
      f=fs*(0:n/2-1)/n;
      subplot(2,1,1);
      plot(x);
     axis([0 1400000 -1.5 1.5]);
      title('原始新闻信号采样后的时域波形'); 
    xlabel('时间轴')
    ylabel('幅值A')
    subplot(2,1,2); 
    plot(f,abs(y(1:n/2))); 
    axis([0 1000 0 5000]);
    title('原始新闻信号采样后的频谱图'); 
    xlabel('频率Hz'); 
    ylabel('频率幅值');
    % n=0:N-1;
    % w=2*n*pi/N;
    FIRsignal=IIR_BANDPASSCheby;
    outsignal=filter(FIRsignal,x);
    %  IIRsignal=IIR_BANDPASSEliptic;
    %  outsignal2=filter(IIRsignal,outsignal);
    % set(gca,'fontsize',15,'tickdir','out')
    % axis([0 5.0E-4 -2 2])
    % xlabel('Time');ylabel('Amplitude')
    % legend('FIR低通数字滤波器后的信号')  
     m=fft(outsignal,n);
     f=48000*(0:n/2-1)/n;
     figure
     subplot(211);
      plot(outsignal);
       axis([0 1400000 -1.5 1.5]);
      title('新闻滤波信号时域波形');
    xlabel('时间轴')
    ylabel('幅值A')
     subplot(212);
     plot(f,abs(m(1:n/2)))
     axis([200 2700 0 5000]);
      title('新闻滤波信号频谱图'); 
    xlabel('频率Hz'); 
    ylabel('频率幅值');
        sound(1.5*outsignal,44100);
    %    audiowrite('C:\Users\a\Desktop\精密仪器\讨论课题目\新闻(IIR滤波后).wav',outsignal2,44100);
    %    sound(x,44100);

    第一次发,欢迎大家指正交流,不喜勿喷!!!!在这里插入图片描述

    展开全文
  • wav 文件用 matlab 叠加噪声并消除噪声。 matlab 噪声 音频文件
  • 还绘制了应用低通滤波器之前和之后的 wav 信号的频谱。 然后写入这些信号的 WAV。 需要设置的参数: -文件名 (file_1) - 时间取自 wav (analysis_time) -过滤器顺序(filter_order) - 低通滤波器的截止频率 (cut...
  • 一、课题目的1、学会MATLAB的使用,掌握其程序设计方法,学会对信号进行分析和处理;2、掌握语音信号的采集、存储和时频分析;3、要求掌握IIR数字滤波器的设计原理、设计方法和设计步骤;4、学习用窗函数法设计FIR...
  • 它通过通过伽马通滤波器组运行信号来分析信号,类似于基于傅立叶的频谱图分析。 安装 您可以使用以下命令直接从此git存储库安装: pip install git+...
  • 巴特沃兹滤波MATLAB程序-滤波器设计.doc 学信号做的一个小课题一部分。 信号的采样,滤波器设计的MATLAB实现 ...运行程序时候请找一个WAV文件命名 sound ,将其放在MATLAB默认路径上 噪声是叠加的正弦高频
  • matlab中的数字滤波器

    千次阅读 2016-05-23 11:42:44
    其中x是输入序列,向量b&a是滤波器的参数。y是输出序列。 下面举一个例子说明一下实际的计算过程。 比如要对一段语音信号做预加重处理,其实就是要让响应的数字序列通过一个高通滤波器滤波器的传递函数模型为...
  • Matlab】用Matlab设计一个滤波器

    千次阅读 2019-09-22 11:23:59
    %语音信号采样频率为22050x1=wavread('Windows Critical Stop.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号y1=fft(x1,1024); %对信号做1024点FFT变换f=fs*(0:511)/10...
  • Matlab fir滤波(conv)

    千次阅读 2020-02-05 17:10:07
    在混合波形中提取目标波形,会经常使用到滤波器,这里通过matlab中的conv函数(向量卷积运算)实现滤波输出。 一:设置滤波器参数 在MATLAB中输入fdatool(Filer Dsign and analysis tool)即可调出滤波器设置界面...
  • 与模拟滤波器相比,数字滤波器具有很多突出的优点,例如它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波器所无法克服的电压漂移和噪声问题。数字滤波器分为有限冲激响应数字滤波器,即FIR数字滤波器...
  • MAtlab窗函数法和双线性变换法设计FIR滤波器和IIR滤波器-DSP.doc 这是我以前的DSP实验报告 鄙人愚钝,程序难免有不当之处,仅供参考 单声道音频信号不能上传,各位可以自己做一个 实验要求、 先采集一...
  • matlab给音频信号加噪并设计IIR滤波器滤去噪声

    千次阅读 多人点赞 2019-11-08 15:08:00
    文章目录matlab的一些常用指令直接给出代码(最近考试略多,以后有时间再详细解释) 先记录一些MATLAB的常用指令,方便看后面代码时参考。 matlab的一些常用指令 matlab官方网站上给出了所有指令的详细文档,这里只...
  • MATLAB语音信号数字滤波器设计提纲一、引言二、正文 1.设计要求 2.设计步骤 3.设计内容 4.简易GUI设计三、结论四、收获与心得五、附录一、引言随着Matlab仿真技术的推广,我们可以在计算机上对声音信号进行处理,...
  • 音频均衡器:使用iir和fir滤波器matlab中开发的简单的wav均衡器,可以与GUI一起使用
  • 1.含LMS算法的函数文件 2.实现了对正弦信号添加高斯噪声自适应滤波还原的基本应用 伪主动降噪 3.可任意读取mp3,wav格式,经过sound播放 4.demo演示
  • wav文件用matlab叠加噪声并消除噪声

    热门讨论 2011-05-18 09:02:04
    利用matlab添加wav音频文件,并在文件上添加用randn产生均值为0方差为1的正态分布白噪声,再用IIR、FIR滤波器滤波。
  • clear; ...filename = ('stereo_sinwave.wav'); filename_h = ('hexdata.h'); %To see the contents of the file you created, use the type function: %type hexdata.txt % [fname,pname]=u...
  • 用卷积滤波器matlab代码FFT卷积滤波器均匀分割 Teensy 4.0的Teensy音频库对象(在Arduino 1.8.9 / Teensyduino 1.47上进行了测试):具有统一分区的FFT卷积滤波器(无论处理的抽头数量如何,都具有固定的延迟) 可能...
  • MATLAB:去除信号噪音 代码: %读音频test,添加噪声后滤除噪声 clear;clc; [audio,fs]=audioread('test.wav');%声音读取audio是读出数据 fs为音频文件的采样率 audio = audio(:,1); %双通道变单通道 n=length(audio...
  • 基于MATLAB的语音信号处理

    万次阅读 多人点赞 2018-07-15 01:21:20
    基于MATLAB的语音信号处理摘要:语音信号处理是目前发展最为迅速的信息科学研究领域中的一个,是目前极为活跃和热门的研究领域,其研究成果具有重要的学术及应用价值。语音信号处理的研究,对于机器语言、语音识别、...
  • matlab中频谱与功率谱密度代码编码分配信号和系统 通过Agam Kashyap:IMT2018004 在MATLAB中已完成以下分配。 信号的采样频率为44100 Hz,如 disp(Fs); 看一下这个音频信号的时域图 如果要放大,您会注意到它是一个...
  • 使用数字滤波器处理音频噪声(附Matlab程序)

    千次阅读 热门讨论 2020-07-18 14:52:41
    Matlab输入的音频文件需要“.wav”文件,可以使用一些软件转换格式(例如酷狗音乐)。使用Matlab软件中的“audioread”函数进行音频的读取,定义读取的音频文件为“signal”并使用“fft”函数把读取的音频进行傅里叶...
  • 设计低通滤波器-Matlab

    2020-04-27 02:49:11
    filename ='./23.wav'; [x ,fs] = audioread(filename); parametricEQ = fdesign.parameq('N,Flow,Fhigh,Gref,G0,GBW,Gst', 2, 4700, 8000 ,0,-15,-5,-1,fs); Hd = design( parametricEQ,'cheb...
  • Matlab:FIR滤波器设计和音频信号滤波去噪

    万次阅读 多人点赞 2011-10-30 21:31:35
    [x,fs,bits]=wavread('test01.wav'); %sound(x,fs,bits); %按指定的采样率和每样本编码位数回放 N=length(x) % 计算信号x的长度 fn=1900; t=0:1/fs:(N-1)/fs; % 计算时间范围,样本数除以采样频率 x=x(:,1); x=x'; ...
  • 生成wav: % 生成时间序列 fs = 5000; % [Hz] 信号采样频率 T = 1; % [s] 信号长度  x = 0:1/fs:T; % [s] 时间序列   % 生成信号序列 f = 440; % [Hz] 信号频率 y = 1*sin(2*pi*f*x)+sin(2*pi*4*f*x);   % 输出...
  • 基于matlab的数字滤波器仿真一、课题介绍本文介绍的是数字滤波器MATLAB环境下的设计方法。数字滤波是数字信号处理的重要内容,在实际应用中有非常大的作用。 我们研究的数字滤波器可分为IIR和FIR两大类。 对于IIR...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 715
精华内容 286
关键字:

matlabwav滤波器

matlab 订阅