软件设计实验报告Word格式.docx
- 文档编号:22516151
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:15
- 大小:473.93KB
软件设计实验报告Word格式.docx
《软件设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《软件设计实验报告Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
用窗口法设计线性相位的FIR低通滤波器,截止频率为1kHz,采样速率为8kHz。
窗口大小N=11,分别加矩形窗和海明窗。
检验结果并计算峰值的位置和过渡带宽度
参考例程:
\Lab0501-FIR\Fir.pjt
\ti\c5500\dsplib\EXAMPLES\FIR\fir.pjt或fir2.pjt或firs.pjt。
1.1.FIR滤波器设计的过程
矩形窗:
汉明窗:
题设
结果
1.2.用MTALAB编程求解:
clearall
N=11;
M=(N-1)/2;
forn=0:
1:
N-1
ifn==M
h1(n+1)=0.25;
h2(n+1)=(0.54-0.46*cos(2*pi*n/(N-1))).*h1(n+1);
else
h1(n+1)=(sin(0.25*pi*(n-M)))/(pi*(n-M));
end
end
h1
h2
x=0:
N-1;
plot(x,h1);
holdon
plot(x,h2,'
r'
);
legend('
矩形窗下的h(n)'
'
Hamming窗下的h(n)'
)
xlabel('
n'
ylabel('
h(n)'
title('
冲击响应ImpulseResponse'
)
figure,freqz(h1);
矩形窗下FIR滤波器的幅频响应'
figure,freqz(h2);
Hamming窗下FIR滤波器的幅频响应'
运行结果
1.3.设计结果
1.∇差分方程
y(n)=-0.0450x(n)+0.0750x(n-2)+0.1592x(n-3)+0.2251x(n-4)+0.2500x(n-5)+0.2251x(n-6)+0.1592x(n-7)+0.0750x(n-8)-0.0450x(n-10)
2.Hamming窗
y(n)=-0.0036x(n)+0.0298x(n-2)+0.1086x(n-3)+0.2053x(n-4)+0.2500x(n-5)+0.2053x(n-6)+0.1086x(n-7)+0.0298x(n-8)-0.0036x(n-10)
1.4.DSP实现
程序如下:
#include<
math.h>
#defineFIRNUMBER11
#defineSIGNAL1F100
#defineSIGNAL2F2000
#defineSAMPLENUMBER128
#defineFSAMPLE6000
#definePI3.1415926
floatINPUT[SAMPLENUMBER],OUTPUT1[SAMPLENUMBER],OUTPUT2[SAMPLENUMBER];
floatfn1[FIRNUMBER]={-0.0450,0.0000,0.0750,0.1592,0.2251,0.2500,0.2251,0.1592,0.0750,0.0000,-0.0450};
floatfn2[FIRNUMBER]={-0.0036,0.0000,0.0298,0.1086,0.2053,0.2500,0.2053,0.1086,0.0298,0.0000,-0.0036};
voidMakeWave()
{
inti;
floatsample_step=1.0/FSAMPLE;
floatj=0.0;
for(i=0;
i<
SAMPLENUMBER;
i++)
{
INPUT[i]=sin(PI*2*j*SIGNAL1F)*128+sin(PI*2*j*SIGNAL2F)*32;
j=j+sample_step;
}
}
voidFIR(intchoose,floatfn[])
intv[FIRNUMBER]={0};
floattemp;
i<
i++)
v[0]=INPUT[i];
temp=v[0]*fn[0]+v[1]*fn[1]+v[2]*fn[2]+v[3]*fn[3]+v[4]*fn[4]+v[5]*fn[5]+v[6]*fn[6]+v[7]*fn[7]+v[8]*fn[8]+v[9]*fn[9]+v[10]*fn[10];
if(choose==0)
{
OUTPUT1[i]=temp;
}
else
OUTPUT2[i]=temp;
v[10]=v[9];
v[9]=v[8];
v[8]=v[7];
v[7]=v[6];
v[6]=v[5];
v[5]=v[4];
v[4]=v[3];
v[3]=v[2];
v[2]=v[1];
v[1]=v[0];
main()
MakeWave();
FIR(0,fn1);
FIR(1,fn2);
while
(1);
1.5.运行步骤:
1.实验准备
设置软件仿真模式;
启动CCS,打开工程,编译并下载程序。
2.选择菜单View->
Graph->
Time/Frequency进行下图设置:
5.清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
6.设置断点:
在程序中注释有断点的语句上设置软件断点,如下图。
7.运行并观察结果:
(1)选择“Debug”菜单的“Animate”项,或按F12键运行程序
(2)观察窗口中时域图形,观察其滤波效果。
结果如下:
8.在频域内观察以上波形的频谱图:
(1)在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“Propeities”功能
(2)将“DisplayType”改为“FFTMagnitude”如下设置:
七、数字图象直方图统计
对输入图像进行直方图统计,输入图片为80×
80黑白自定义图像。
\Lab0902-Histogram\Demo.pjt。
7.1程序如下:
#include<
stdio.h>
#defineIMAGEWIDTH80
#defineIMAGEHEIGHT80
intdbImage[IMAGEWIDTH*IMAGEHEIGHT];
floatHistogram[256];
voidReadImage(int*pImage,char*cFileName,intnWidth,intnHeight)
intj;
int*pWork;
FILE*fp;
if(fp=fopen(cFileName,"
rb"
))
fseek(fp,1078L,SEEK_SET);
pWork=pImage+(nHeight-1)*nWidth;
for(j=0;
j<
nHeight;
j++)
fread(pWork,nWidth,1,fp);
pWork-=nWidth;
fclose(fp);
voidMyHistogram(intdbimage[],intwidth,intheight)
256;
i++)
Histogram[i]=0;
width*height;
Histogram[dbimage[i]]++;
//统计图像灰度值个数
Histogram[i]=Histogram[i]/width/height;
intmain()
ReadImage(dbImage,"
..\\lena160.bmp"
IMAGEWIDTH,IMAGEHEIGHT);
MyHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT);
while
(1);
//BreakPoint
7.2运行步骤:
实验准备
打开观察窗口:
选择菜单View->
Image进行下图设置:
清除显示:
设置断点:
在程序中注释有断点的语句上设置软件断点。
运行并观察结果:
选择“Debug”菜单的“Animate”项,或按F12键运行程序,结果如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)