概述
一.用FFT实现有限长序列的线性卷积:
给定两个序列x=[2,1,1,2],h=[1,-1,-1,1]
1、直接计算两个序列的线性卷积;
2、用FFT实现线性卷积,并和1的结果对比分析。
clear all;
close all;
x = [2,1,1,2];
h = [1,-1,-1,1];
nx = length(x);
nh = length(h);
%第一问
%直接计算线性卷积
y = conv(x,h)
%第二问
%重叠相加法计算线性卷积
x0 = zeros(1,nx+nh-1);
x0(1:nx)=x(1:4);
h0 = zeros(1,nx+nh-1);
h0(1:nh)=h(1:4);
y0 = fftfilt(x0,h0)
%两种计算方法的差异
delta_y = y0-y
实验结果:
结果分析:
图1-1中y为直接线性卷积的结果,y0为补领后采用重叠相加发(fftflit)的结果,二者相等.
二、两个音频信号“Female.wav”and “male.wav”二选一,进行如下实验:
1、读出所给音频信号x(t),确定该音频信号的采样率;画出该音频信号的时域波形和频谱图;
2、对音频信号人为加噪声,回放音频信号,感觉和原来有什么不同?
3、对加噪声后的信号,用滑动平均滤波器进行滤波(用重叠相加法fftfilt实现),得到滤波后的音频信号f(t);
4、对比原信号x(t)和滤波后音频信号f(t)的波形及频谱。播放这两个音频信号,感觉前后声音的变化
close all;
clear all;
[x,fs] = wavread('a_Female.wav');
nx = length(x);
sound(x);
%采样频率fs = 16000;
X = fft(x);
Y = abs(fftshift(X));
%图一,音频时域和频域
figure
subplot(211)
plot(x)
title('音频时域')
subplot(212)
plot(Y)
title('音频频域')
%图二
figure
%噪声方差
sigma = 0.05;
r = normrnd(x,sigma);
nr = length(r);
sound(r);
R = fft(r);
YR = abs(fftshift(R));
subplot(211)
plot(r)
title('音频时域(加噪声)')
subplot(212)
plot(YR)
title('音频频域(加噪声)')
%图三
nw = 10;%窗长
w = ones(1,nw);
r0 =zeros(1,nr+nw-1);
w0 = zeros(1,nr+nw-1);
r0(1:nr) = r(1:nr);
w0(1:nw) = w(1:nw);
f = fftfilt(r0,w0);
sound(f);
F=fft(f);
YF=abs(fftshift(F));
figure
subplot(211)
plot(f)
title('音频时域(滤波)')
subplot(212)
plot(YF)
title('音频频域(滤波)')
结果分析:
首先通过设定噪声的方差调整噪声的影响,此代码中设定为sigma=0.05.实验过程中尝试过将sigma=1,0.1,0.01.sigma=1时基本全是噪声且很响;sigma=0.1时,原声被噪声影响也较大;sigma=0.01时基本没影响;最终选择为0.05.
实验过程中一次听三段音频(原音频,加噪声音频和滤波后音频),结果是基本能听清滤波后的信号.
通过对比图2-1,2-2,2-3,也可以看出重叠相加法在能滤掉高频的噪声.
三、 一LTI系统的系统函数如下:
1、分解成2阶系统的级联;
2、分解成1阶系统的级联;
3、画零极点分布图;(要求分别用zplane(b,a)和zplane(z,p)画)
4、系统的频率响应的幅度响应和相位响应
close all;
clear all;
num = [0.1,0.12,0.02];
den = [1,-0.2,2.42,-1.312,0.64];
[z,p,k]=tf2zp(num,den)
sos=zp2sos(z,p,k)
[sos, G]=tf2sos(num,den)
%图三
figure
subplot(211)
zplane(num,den)
title('zplane(num,den)')
%由于此算法是先化成正次幂,会含有z=0的两个零点
subplot(212)
zplane(z,p)
title('zplane(z,p)')
%由于此算法是直接算负次幂,会漏掉Z=0的两个零点
%图四
N=1000;
[H,f]=freqz(num,den,N);
figure
subplot(211)
plot(abs(H))
title('幅度相应')
subplot(212)
plot(angle(H))
title('相位相应')
结果分析
sos=zp2sos(z,p,k)
算法1是先将分子分母化成正次幂,会含有z=0的两个零点
[sos, G]=tf2sos(b,a)
算法2是直接算负次幂,会漏掉Z=0的两个零点
最后
以上就是闪闪寒风为你收集整理的华工【数字信号处理】(DSP)实验二 数字信号处理应用实例的全部内容,希望文章能够帮你解决华工【数字信号处理】(DSP)实验二 数字信号处理应用实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复