数字信号处理大作业代码及报告.zip

1、原始语音信号的采集与处理

程序清单:

%================原始语音信号===========================%

figure(1);

[music,Fs] = audioread('pei.wav'); %语音信号的采样

y1=music(:,1); %取单声道

y2=music(:,2);

% sound(y1,Fs);

Ns=length(y1); %采样点数Ns

t=(0:Ns-1)/Fs;

subplot(231);

plot(t,y1);title('原始音频信号波形');

xlabel('time/s');ylabel('幅度');

Y1=fft(y1);

magY1=abs(Y1);

magY1(1)=magY1(1)/Ns;

magY1(2:Ns)=magY1(2:Ns)/Ns*2 ;

subplot(234);

f=(0:Ns-1)*Fs/Ns; %Fs/Ns为频率分辨率

plot(f,magY1);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

运行结果:

图一 原始语音信号时域波形

图二 原始语音信号频谱图

2、噪声信号的生成与处理

程序清单:

%=============噪声====================================%

t=(0:Ns-1)/Fs;

noise=sin(2*pi*7500*t);%噪声为正弦波幅值为1 频率为7500Hz

subplot(232);

plot(t,noise);title('噪声信号波形');

xlabel('time/s');ylabel('幅度');

Noise=fft(noise);

magN=abs(Noise);

magN(1)=magN(1)/Ns;

magN(2:Ns)=magN(2:Ns)/Ns*2;

subplot(235);

f=(0:length(Noise)-1)*Fs/Ns;

plot(f,magN);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

运行结果:

图三 噪声信号时域图

图四 噪声信号频谱图

3、加噪语音信号的生成与处理

程序清单:

%==============加性噪声================================%

y1n=y1+noise';

% sound(y1n,Fs);

t=(0:length(y1n)-1)/Fs;

subplot(233);

plot(t,y1n);title('加噪后音频信号波形');

xlabel('time/s');ylabel('幅度');

Xn=fft(y1n);

magXn=abs(Xn);

magXn(1)=magXn(1)/Ns;

magXn(2:Ns)=magXn(2:Ns)*2/Ns;

subplot(236);

f=(0:length(Xn)-1)*Fs/length(Xn);

plot(f,magXn);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

运行结果:

图五 加噪后语音信号时域图

图六 加噪语音信号频谱图

4、巴特沃斯低通滤波器的设计

程序清单:

%==============巴特沃斯低通滤波器======================%

fp=4900;fs=7450;As=100;Rp=1; OmegaP=2*pi*fp;OmegaS=2*pi*fs;

wp=OmegaP/Fs;ws=OmegaS/Fs;

wp1=2*Fs*tan(wp/2);

ws1=2*Fs*tan(ws/2);

[N,wc]=buttord(wp1,ws1,Rp,As,'s');

[b,a]=butter(N,wc,'s');

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

w0=[wp,ws];

Hx1=freqz(bz,az,w0);

[H,w]=freqz(bz,az);

dbHx1=-20*log10(abs(Hx1)/max(abs(H)));

figure(4);

plot(w/(2*pi)*Fs/1000,20*log10(abs(H)));

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

xlabel('f(KHz)');ylabel('dB');

%----滤波后音频信号----%

figure(2);

out=filter(bz,az,y1n);

t=(0:length(out)-1)/Fs;

subplot(221);

plot(t,out);title('巴特沃斯低通滤波后音频信号波形');

xlabel('time/s');ylabel('幅度');

OUT=fft(out);

magOUT=abs(OUT);

magOUT(1)=magOUT(1)/Ns;

magOUT(2:Ns)=magOUT(2:Ns)/Ns*2;

subplot(223);

f=(0:length(OUT)-1)*Fs/length(OUT);

plot(f,magOUT);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

% sound(out,Fs);

运行结果:

图七 巴特沃斯低通滤波器幅频特性曲线

图八 滤波后语音信号频域波形

5、切比雪夫II型低通滤波器设计

程序清单:

%=============切比雪夫II型低通滤波器================%

fp=6900;fs=7450;As=100;Rp=1;

OmegaP=2*pi*fp;OmegaS=2*pi*fs;

wp=OmegaP/Fs;ws=OmegaS/Fs;

wp1=2*Fs*tan(wp/2);

ws1=2*Fs*tan(ws/2);

[N,wc]=cheb2ord(wp1,ws1,Rp,As,'s');

[b,a]=cheby2(N,As,wc,'s');

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

figure(5);

w0=[wp,ws];

Hx2=freqz(bz,az,w0);

[H,w]=freqz(bz,az);

dbHx2=-20*log10(abs(Hx2)/max(abs(H)));

figure(5);

plot(w/(2*pi)*Fs/1000,20*log10(abs(H)));

title('切比雪夫II型低通数字滤波器幅频特性');

xlabel('f(KHz)');ylabel('dB');

%-----------------滤波后音频信号-------------%

figure(2);

out=filter(bz,az,y1n);

t=(0:length(out)-1)/Fs;

subplot(222);plot(t,out);

title('切比雪夫II型低通滤波后音频信号波形');

xlabel('time/s');ylabel('幅度');

OUT=fft(out);

magOUT=abs(OUT);

magOUT(1)=magOUT(1)/Ns;

magOUT(2:Ns)=magOUT(2:Ns)/Ns*2;

subplot(224);

f=(0:length(OUT)-1)*Fs/length(OUT);

plot(f,magOUT);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

% sound(out,Fs);

运行结果:

图九 切比雪夫II型低通滤波器频率响应

图十 滤波后语音信号频谱图

6、巴特沃斯带阻滤波器设计

程序清单:

%==================巴特沃斯带阻滤波器================%

fp1=7000;fs1=7450;fs2=7550;fp2=8000;As=100;Rp=1;

OmegaP1=2*pi*fp1;OmegaS1=2*pi*fs1;

OmegaP2=2*pi*fp2;OmegaS2=2*pi*fs2;

wp1=OmegaP1/Fs;ws1=OmegaS1/Fs;

wp2=OmegaP2/Fs;ws2=OmegaS2/Fs;

wp11=2*Fs*tan(wp1/2);

ws11=2*Fs*tan(ws1/2);

wp22=2*Fs*tan(wp2/2);

ws22=2*Fs*tan(ws2/2);

wp=[wp11,wp22];

ws=[ws11,ws22];

[N,wc]=buttord(wp,ws,Rp,As,'s');

[b,a]=butter(N,wc,'stop','s');

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

w0=[wp1,ws1,ws2,wp2];

Hx3=freqz(bz,az,w0);

[H,w]=freqz(bz,az);

dbHx3=-20*log10(abs(Hx3)/max(abs(H)));

figure(6);

plot(w/(2*pi)*Fs/1000,20*log10(abs(H)));

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

xlabel('f(KHz)');ylabel('dB');

%----滤波后音频信号----%

figure(3);

out1=filter(bz,az,y1n);

t=(0:length(out1)-1)/Fs;

subplot(221);

plot(t,out1);title('巴特沃斯带阻滤波后音频信号波形');

xlabel('time/s');ylabel('幅度');

OUT1=fft(out1);

magOUT1=abs(OUT1);

magOUT1(1)=magOUT1(1)/Ns;

magOUT1(2:Ns)=magOUT1(2:Ns)/Ns*2;

subplot(223);

f=(0:length(OUT1)-1)*Fs/length(OUT1);

plot(f,magOUT1);title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

% sound(out1,Fs);

运行结果:

图十一 巴特沃斯带阻滤波器频率响应

图十二 滤波后语音信号的频谱图

7、切比雪夫II型带阻滤波器设计

程序清单:

%==========切比雪夫II型带阻滤波器============%

fp1=7200;fs1=7450;fs2=7550;fp2=7800;As=100;Rp=1;

OmegaP1=2*pi*fp1;OmegaS1=2*pi*fs1; OmegaP2=2*pi*fp2;OmegaS2=2*pi*fs2;

wp1=OmegaP1/Fs;ws1=OmegaS1/Fs; wp2=OmegaP2/Fs;ws2=OmegaS2/Fs;

wp11=2*Fs*tan(wp1/2); ws11=2*Fs*tan(ws1/2);

wp22=2*Fs*tan(wp2/2);

ws22=2*Fs*tan(ws2/2);

wp=[wp11,wp22];

ws=[ws11,ws22];

[N,wc]=cheb2ord(wp,ws,Rp,As,'s'); [b,a]=cheby2(N,As,wc,'stop','s'); [bz,az]=bilinear(b,a,Fs); w0=[wp1,ws1,ws2,wp2];

Hx4=freqz(bz,az,w0); [H,w]=freqz(bz,az);

dbHx4=-20*log10(abs(Hx4)/max(abs(H)));

figure(7);

plot(w/(2*pi)*Fs/1000,20*log10(abs(H)));

title('切比雪夫II型带阻数字滤波器幅频特性');

xlabel('f(KHz)');ylabel('dB');

%----滤波后音频信号----%

figure(3);

out1=filter(bz,az,y1n);

t=(0:length(out1)-1)/Fs;

subplot(222);plot(t,out1);

title('切比雪夫II型带阻滤波后音频信号波形');

xlabel('time/s');ylabel('幅度');

OUT1=fft(out1);

magOUT1=abs(OUT1);

magOUT1(1)=magOUT1(1)/Ns;

magOUT1(2:Ns)=magOUT1(2:Ns)/Ns*2;

subplot(224);

f=(0:length(OUT1)-1)*Fs/length(OUT1);

subplot(224);plot(f,magOUT1);

title('幅频特性曲线');

xlabel('frequency/Hz');ylabel('幅度');

axis([0 1e+4 0 0.03]);

% sound(out1,Fs);

运行结果:

图十三 切比雪夫II型带阻滤波器频率响应

图十四 滤波后语音信号的频谱图


小结

本次大作业利用函数audioread对语音信号进行采样,记住采样频率和采样点数,后利用函数FFT对信号进行快速傅里叶变换,得到信号的频谱特性,然后加入一固定频率干扰信号,再画出语音信号干扰前后的时域波形,并对其频谱进行分析。最后采用双线性变换法设计几种类型的数字滤波器并对混合语音信号进行滤波、FFT快速傅里叶变换并分析各种滤波器的特点及优劣性。

1、从幅度特性比较,巴特沃斯滤波器在全频段具有单调下降的幅度特性;切比雪夫II型在通带是单调下降的,在阻带是呈等波纹型的。

2、从阶次N比较,在滤波器具有相同的幅度特性指标下,巴特沃斯滤波器所需阶次N比切比雪夫II型滤波器所需阶次要大,本大作业中,相对于低通滤波器,巴特沃斯滤波器为26阶;切比雪夫II型滤波器为13阶。相对于带阻滤波器,巴特沃斯滤波器为6阶;切比雪夫II型滤波器为5阶。

3、从过渡带比较,当阶次N,通带最大衰减Rp(dB),阻带最小衰减As(dB)相同且通带截止频率OmegaP(或阻带截止频率OmegaS)相同时,巴特沃斯型的过渡带比切比雪夫II型要宽。本次大作业中,巴特沃斯低通滤波器过渡带宽为2550Hz,切比雪夫II型低通滤波器过渡带宽为550Hz,明显较窄。

4、在滤波器设计中,当滤波器的通带最大衰减Rp(dB)越小,阻带最小衰减As(dB)越大,滤波器的滤波效果越好,但同时滤波器的阶次越高,复杂度也越高,设计更困难。

5、相较于低通滤波器和带阻滤波器之间,带阻滤波器的滤波效果更好,它能准确滤除噪声信号而保留语音信号;低通滤波器不仅将噪声信号滤除还把其后的的所有频率分量全部滤除。

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c实现任意点数的FFT及IFFT是指在数字信号处理中,使用C语言编程实现对任意点数的信号进行快速傅里叶变换(FFT)和逆傅里叶变换(IFFT)。 FFT是一种将时域信号转换为频域信号的算法,可以将信号分解成不同频率的成分。而IFFT则是将频域信号重新恢复为时域信号。 实现任意点数的FFT及IFFT的关键是对输入信号进行零填充。零填充是将输入信号的长度扩展为2的幂次方,以便进行FFT计算。具体步骤如下: 1. 首先确定输入信号的长度,记为N。 2. 找到大于N的最小的2的幂次方,记为M。例如,如果N=9,则M=16。 3. 创建一个长度为M的数组,将输入信号拷贝到该数组中,并将其余部分填补为0。 4. 对这个数组进行FFT计算,得到频域信号。 5. 如果需要进行IFFT计算,则对频域信号进行IFFT计算,并得到恢复的时域信号。 在C语言中,可以使用库函数或自己实现FFT和IFFT算法。常用的库函数有FFTW、KissFFT等,它们都提供了对任意点数的FFT和IFFT计算。 总之,实现任意点数的FFT及IFFT需要对输入信号进行零填充,并采用合适的算法进行计算。通过使用C语言编程,可以轻松地实现这些功能。 ### 回答2: c 实现任意点数的fft及ifft(数字信号处理 fft).zip是一个压缩文件,其中包含有关数字信号处理中快速傅里叶变换(FFT)以及逆傅里叶变换(IFFT)的代码实现。 FFT是一种高效的算法,可以将一个信号从时间域转换到频率域。它广泛应用于信号处理、通信和图像处理等领域。在FFT算法中,信号被分解为一系列的频率成分,这些频率成分可以通过完成一系列乘法和加法操作来计算。FFT算法可以显著减少运算量,提高计算速度。 IFFT是FFT的逆变换,可以将信号从频率域转换回时间域。它与FFT具有相似的算法思想,但是计算步骤相反。通过IFFT,我们可以恢复原始信号,从而实现信号的逆变换。 c 实现任意点数的fft及ifft(数字信号处理 fft).zip文件中的代码实现了FFT和IFFT算法,可以处理任意点数的信号。您可以使用这些代码来实现您自己的信号处理任务,例如频谱分析、滤波和信号重构等。 要使用这个压缩文件,您可以下载并解压缩它。然后,您可以查看代码示例,并根据自己的需求进行修改和使用。建议您阅读附带的文档,了解如何正确使用这些算法,并理解算法的原理。 通过使用c 实现任意点数的fft及ifft(数字信号处理 fft).zip中提供的代码和算法,您可以更好地理解和应用傅里叶变换在数字信号处理中的重要性和作用。 ### 回答3: c 实现任意点数的fft及ifft(数字信号处理 fft).zip是一个压缩文件,它包含了用C语言编写的实现任意点数的FFT(快速傅里叶变换)和IFFT(逆快速傅里叶变换)算法的代码。 FFT和IFFT是数字信号处理中常用的算法,用于将信号从时域变换到频域,或者从频域变换到时域。这些算法被广泛应用于信号处理、图像处理、通信系统等领域。 这个压缩文件中的代码可以实现任意点数的FFT和IFFT,也就是说可以处理不限于2的幂次的输入数据。一些常见库或者工具只支持2的幂次的FFT,而这个代码可以处理更为一般的情况。 通过使用这个代码,用户可以自定义输入数据的点数,并得到对应的FFT和IFFT结果。这对于一些特定的应用场景非常有用,比如需要处理采样率不同的信号,或者需要处理非常大的信号。 这个压缩文件中的代码是用C语言编写的,因此可以在大多数平台上运行。用户可以解压缩压缩文件,并将代码导入到自己的项目中进行使用。为了使用这些代码,用户需要了解FFT和IFFT的基本原理,并按照代码中的接口进行调用。 总之,这个压缩文件提供了实现任意点数的FFT和IFFT算法的代码,用户可以使用这个代码进行数字信号处理相关的工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值