哈工大数字信号处理大作业word文档良心出品文档格式.docx
《哈工大数字信号处理大作业word文档良心出品文档格式.docx》由会员分享,可在线阅读,更多相关《哈工大数字信号处理大作业word文档良心出品文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
%x1=firstsequenceovern1
%x2=secondsequenceovern2(n2canbedifferentfromn1)
%
n=min(min(n1),min(n2)):
max(max(n1),max(n2));
%durationofy(n)
y1=zeros(1,length(n));
y2=y1;
y1(find((n>
=min(n1))&
(n<
=max(n1))==1))=x1;
%x1withdurationofy
y2(find((n>
=min(n2))&
=max(n2))==1))=x2;
%x2withdurationofy
y=y1+y2;
%sequenceaddition
3.序列相乘
序列相乘程序
function[y,n]=sigmult(x1,n1,x2,n2)
%implementsy(n)=x1(n)*x2(n)
%---------------------------------------------
%[y,n]=sigmult(x1,n1,x2,n2)
%y=productsequenceovern,whichincludesn1andn2
%x1=firstsequenceovern1
%x2=secondsequenceovern2(n2canbedifferentfromn1)
%
m(min(n1),min(n2))%durationofy(n)
%x1withdurationofy
%x2withdurationofy
y=y1.*y2;
%sequencemultiplication
4.序列翻转
序列翻转程序
function[y,n]=sigfold(x,n)
%implementsy(n)=x(-n)
%[y,n]=sigfold(x,n)
y=fliplr(x);
n=-fliplr(n);
5.序列移位
序列移位程序
function[y,n]=sigshift(x,m,n0)
%implementsy(n)=x(n-n0)
%[y,n]=sigshift(x,m,n0)
n=m+n0;
y=x;
主程序
x1=[0:
5];
x2=[0,1,2,3];
n1=0:
5;
n2=0:
3;
%N=n1+n2-1;
figure
(1)
subplot(211)
stem(x1)
xlabel('
x1'
)
subplot(212)
stem(x2)
x2'
title('
原序列'
x=sigadd(x1,n1,x2,n2);
figure
(2)
stem(x)
x1+x2'
序列相加'
figure(3)
[x,n]=sigfold(x1,n1);
stem(n,x)
x1(-n)'
序列翻转'
[x,n]=sigshift(x,n,2);
figure(4)
x1(-n+2)'
序列移位'
x=sigmult(x1,n1,x2,n2);
figure(5)
序列相乘'
x1*x2'
(二)自定义函数计算线性卷积
1.题目分析
使用上一题中的序列相乘、翻转和求和子函数计算线性卷积,并与这直接用conv函数计算的线性卷积结果相比较。
2.流程图
3.实验程序
clear
x2=[0:
3];
n1=[0:
n2=[0:
leng1=length(x1);
leng2=length(x2);
%定义序列x1和x2
N=leng1+leng2-1;
%计算卷积后的序列长度
f=zeros(1,N);
%创建存放卷积结果的序列
[x21,n2]=sigfold(x2,n2);
%调用翻转子函数将x2翻转
fori=0:
1:
N-1;
%移位计算卷积,循环N次
[x21,n2]=sigshift(x21,n2,1);
%调用移位子函数将右移1位
y=sigmult(x1,n1,x21,n2);
%调用相乘子函数将移位后的序列相乘
z=sum(y);
%将相乘后的序列求和
f(1,N)=z;
%将求和的值放入f的最后一项
f=circshift(f'
-1)'
;
%将f循环左移一位,为下一个序列求和做准备
end
2)'
%循环中循环左移多了两次,将序列调整回正常位置
y=conv(x1,x2)%直接调用conv计算线性卷积存入y
stem(f)%绘制自定义函数计算的卷积结果图
自定义函数计算线性卷积'
stem(y)%绘制调用conv函数计算的卷积结果图
使用conv计算线性卷积'
4.实验结果和分析
a)实验结果图
b)结果分析和讨论
使用自定义函数计算的卷积结果和调用conv计算的卷积结果一致,本实验再现了使用MATLAB计算线性卷积的过程,加深了对线性卷积的认识。
实验题目二
设计FIR数字滤波器
使用汉宁窗设计带阻FIR滤波器,性能指标为:
阻带边界频率
,低通边界频率
,高通边界频率
,通带纹波
,阻带纹波
,描述设计过程,并绘制其频率特性图。
(一)实验过程和步骤:
在电子电路设计中,滤波器起着非常重要的作用。
利用滤波器可以改变信号中所含频率的相对比例或滤除某些频率分量。
在当今的电子设计中,数字部分所占的比重越来越大,滤波器设计也由传统的模拟滤波器转变成了数字滤波器。
相比于模拟滤波器,数字滤波器的性能更加容易控制,并且性能稳定。
如何设计好数字滤波器,已经成为当今电子设计人员不可缺少的本领。
数字滤波器分为无限长冲击响应滤波器(IIR)和有限长冲击响应滤波器(FIR)两种。
由于IIR滤波器的设计需要考虑稳定性问题,并且具有相位非线性的特点,应用比较少。
FIR的低通滤波器设计一般采用窗函数法,利用已知窗函数的特性来设计所需性能的滤波器。
常用的窗函数由汉名窗,海宁窗,布莱克曼,恺撒窗等,其中除了恺撒窗外都有固定的性能参数(截止频率,通代纹波,阻带衰减等),而恺撒窗通过对参数β的改变可以实现各种其他窗函数的性能。
综合以上所述,本文简单介绍了用汉宁窗设计FIR型数字滤波器的过程。
窗函数法设计FIR滤波器的基本步骤
(1)根据技术要求确定待求滤波器的单位取样响应
如果已知待求滤波器的频响:
Hd(ejw),则:
如果已知通带和阻带衰减和边界频率的要求,可选用理想滤波器作为逼近函数:
Hd(ejw)—〉IDFT—〉hd(n)
==〉
(2)根据过渡带及阻带衰减要求,确定窗函数及其长度
设过渡带宽为:
,其值近似于窗函数主瓣宽度。
与窗口长度N成反比:
NA/,A的窗口形式;
如:
矩形窗:
A=4;
海明窗:
A=8;
选择窗口函数的原则:
在保证阻带衰减满足要求的前提下,尽量选择主瓣窄的窗函数。
(3)计算滤波器的单位采样响应h(n)
(4)验算技术指标是否满足要求,计算设计的滤波器频率响应:
计算设计的滤波器频率响应:
汉宁窗定义
汉宁窗(Hanning)函数时域形式可表示为:
利用傅利叶变换的调制特性,由上式可得汉宁窗的平谱函数为:
当N远大于1时,上式可近似表示为:
这三部分之和使旁瓣互相抵消,能量更集中在主瓣,汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N。
2.实验程序
wp1=0.3*pi;
ws1=0.4*pi;
ws2=0.6*pi;
wp2=0.7*pi;
%设计指标参数赋值
wdelta=ws1-wp1;
%计算过渡带宽度
N0=ceil(6.2*pi/wdelta);
%计算阶数N0,ceil(x)取大于等于x的最小整数
wc=[(ws1+wp1)/2,(ws2+wp2)/2];
%设置理想带通截止频率
N=N0+mod(N0+1,2);
%确保h(n)长度是奇数
n=0:
N0-1;
b=fir1(N0,wc/pi,'
stop'
hanning(N));
%调用firl计算带阻FIR滤波器的h(n)
[H,f]=freqz(b,1,512,100);
%计算滤波器的幅频特性
figure
(1)
plot(f,20*log10(abs(H)))
xlabel('
频率/Hz'
);
ylabel('
振幅/dB'
gridon;
title('
频率特性'
impz(b,1)%滤波器的单位脉冲响应
n'
ylabel('
h(n)'
gridon;
单位脉冲响应'
zplane(b,1)%滤波器的极点分布
3.流程图
(二)实验结果和分析
a)程序运行结果图
设计的FIR滤波器满足了阻带边界频率
的要求,但是由于汉宁窗的阻带最小衰减是44dB,达不到题目的要求,如果选择哈明窗、布莱克曼窗或者凯塞窗都能达到实验题目要求。