matlab报告Word文件下载.docx

上传人:b****4 文档编号:17574026 上传时间:2022-12-07 格式:DOCX 页数:20 大小:520.39KB
下载 相关 举报
matlab报告Word文件下载.docx_第1页
第1页 / 共20页
matlab报告Word文件下载.docx_第2页
第2页 / 共20页
matlab报告Word文件下载.docx_第3页
第3页 / 共20页
matlab报告Word文件下载.docx_第4页
第4页 / 共20页
matlab报告Word文件下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

matlab报告Word文件下载.docx

《matlab报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《matlab报告Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。

matlab报告Word文件下载.docx

通过c语言实现的快速傅里叶变换具有较为复杂的编程过程,这对与计算具有很大的不便,但是如果采用matlab的话就比较简单了。

第四次实验:

IIR和FIR滤波器的matlab实现

通过matlab实现特定要求的滤波器,例如巴特沃斯、切比雪夫,还有FIR滤波器的实现

切比雪夫带通滤波器

巴特沃斯带通滤波器

通过比较就可以得出互相的优缺点,而且过程较为简单。

1.滤波器的幅频与相频响应

2.输入与滤波后信号显示

3.输出的信号波形

 

各种滤波窗口的比较:

实验总结:

通过计算,编程可以得出滤波器的滤波特性。

附录:

三个同心圆的显示:

t=0:

0.01:

2*pi;

x=exp(i*t);

y=[x;

2*x;

3*x]'

;

plot(y)

gridon;

%加网格线

boxon;

%加坐标边框

axisequal%坐标轴采用等刻度

饼状图比例分析:

subplot(1,2,1);

pie([2347,1827,2043,3025]);

title('

饼图'

);

legend('

一季度'

'

二季度'

三季度'

四季度'

subplot(1,2,2);

compass([7+2.9i,2-3i,-1.5-6i]);

相量图'

动态图形显示:

[X,Y,Z]=peaks(30);

surf(X,Y,Z)

axis([-3,3,-3,3,-10,10])

axisoff;

shadinginterp;

colormap(hot);

m=moviein(20);

%建立一个20列大矩阵

fori=1:

20

view(-37.5+24*(i-1),30)%改变视点

m(:

i)=getframe;

%将图形保存到m矩阵

end

movie(m,2);

%播放画面2次

卷积的计算公式:

function[y,ny]=conv_m(x,nx,h,nh)

nyb=nx

(1)+nh

(1);

nye=nx(length(x))+nh(length(h));

ny=[nyb:

nye];

y=conv(x,h);

卷积的应用实例:

x=[00.511.50];

nx=0:

4;

h=[11100];

nh=0:

[y,ny]=conv_m(x,nx,h,nh);

subplot(2,2,1);

stem(nx,x);

序列x'

xlabel('

n'

ylabel('

x(n)'

subplot(2,2,2);

stem(nh,h);

序列h'

h(n)'

subplot(2,2,3);

stem(ny,y);

两序列卷积'

y(n)'

巴特沃斯滤波器的实现

w1=2*400*tan(2*pi*95/(2*400));

w2=2*400*tan(2*pi*105/(2*400));

wr=2*400*tan(2*pi*110/(2*400));

wm=2*400*tan(2*pi*90/(2*400));

[n,wn]=buttord([w1w2],[wmwr],3,10,'

s'

[b,a]=butter(n,wn,'

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

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

f=w/pi*200;

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

axis([90,110,-10,3]);

grid;

频率/kHz'

幅度/dB'

切比雪夫滤波器的实现

[n,wn]=cheb1ord([w1w2],[wmwr],3,10,'

[b,a]=cheby1(n,3,wn,'

双线性变换实现巴特沃斯低通滤波器的技术指标:

采样频率10Hz。

通带截止频率fp=0.2*piHz。

阻带截止频率fs=0.3*piHz。

4.通带衰减小于1dB,阻带衰减大于20dB

使用双线性变换法由模拟滤波器原型设计数字滤波器

T=0.1;

FS=1/T;

fp=0.2*pi;

fs=0.3*pi;

wp=fp/FS*2*pi;

ws=fs/FS*2*pi;

Rp=1;

%通带衰减

As=15;

%阻带衰减

OmegaP=(2/T)*tan(wp/2);

%频率预计

OmegaS=(2/T)*tan(ws/2);

%设计巴特沃斯低通滤波器原型

N=ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(OmegaP/OmegaS)));

OmegaC=OmegaP/((10^(Rp/10)-1)^(1/(2*N)));

[z,p,k]=buttap(N);

%获取零极点参数

p=p*OmegaC;

k=k*OmegaC^N;

B=real(poly(z));

b0=k;

cs=k*B;

ds=real(poly(p));

[b,a]=bilinear(cs,ds,FS);

%双线性变换

figure

(1);

%绘制结果

freqz(b,a,512,FS);

%进行滤波验证

figure

(2);

%绘制结果

figure(3);

f1=50;

f2=250;

n=0:

63;

x=sin(2*pi*f1*n)+sin(2*pi*f2*n);

stem(x,'

.'

title('

输入信号'

y=filter(b,a,x);

stem(y,'

);

title('

滤波之后的信号'

输出的信号'

wc=0.2*pi;

N=33;

tao=(N-1)/2;

n=[0:

(N-1)];

m=n-tao+0.000001;

hd=sin(wc*m)./(pi*m);

wd1=boxcar(N)'

b1=hd.*wd1;

wd2=hanning(N)'

b2=hd.*wd2;

wd3=blackman(N)'

b3=hd.*wd3;

wd4=hamming(N)'

b4=hd.*wd4;

[h1,w]=freqz(b1,1);

[h2,w]=freqz(b2,1);

[h3,w]=freqz(b3,1);

[h4,w]=freqz(b4,1);

plot(w,20*log10(abs(h1)),’-’,20*log10(abs(h2)),’..’,20*log10(abs(h3)),’-.’,20*log10(abs(h4)),’--‘);

矩形窗'

汉宁窗'

布莱克曼窗'

汉明窗'

c语言实现fft

#include<

stdio.h>

dos.h>

stdlib.h>

malloc.h>

math.h>

typedefstruct{

floatreal;

floatimag;

}COMPLEX;

externvoidfft(COMPLEX*x,intm);

voidfft(COMPLEX*x,intm)

{

staticCOMPLEX*w;

staticintmstore=0;

staticintn=1;

COMPLEXu,temp,tm;

COMPLEX*xi,*xip,*xj,*wptr;

inti,j,k,l,le,windex;

doublearg,w_real,w_imag,wrecur_real,wrecur_imag,wtemp_real,wtemp_imag;

if(m!

=mstore)

{

if(mstore!

=0)free(w);

mstore=m;

if(m==0)return;

n=1<

<

m;

le=n/2;

w=(COMPLEX*)malloc((le-1)*sizeof(COMPLEX));

if(!

w)

{

printf("

\nUnabletoallocateCOMPLEXwarray\n"

exit

(1);

}

arg=4.0*atan(1.0)/le;

wrecur_real=w_real=cos(arg);

wrecur_imag=w_imag=-sin(arg);

xj=w;

for(j=1;

j<

le;

j++)

xj->

real=(float)wrecur_real;

imag=(float)wrecur_imag;

xj++;

wtemp_real=wrecur_real*w_real-wrecur_imag*w_imag;

wtemp_imag=wrecur_real*w_imag+wrecur_imag*w_real;

wrecur_real=wtemp_real;

}

le=n;

windex=1;

for(l=0;

l<

l++)

le=le/2;

for(i=0;

i<

n;

i=i+2*le)

xi=x+i;

xip=xi+le;

temp.real=(xi->

real+xip->

real);

temp.imag=(xi->

imag+xip->

imag);

xip->

real=(xi->

real-xip->

imag=(xi->

imag-xip->

xi=&

temp;

wptr=w+windex-1;

u=*wptr;

for(i=j;

{

xi=x+i;

xj=x+j;

temp=*xj;

*xj=*xi;

*xi=temp;

}

}

voidmain()

COMPLEX*x,*xtemp;

inti,nn,mm;

doubley,q;

system("

cls"

printf("

\nInputm="

scanf("

%d"

&

mm);

nn=1<

mm;

x=(COMPLEX*)malloc(nn*sizeof(COMPLEX));

xtemp=(COMPLEX*)malloc(nn*sizeof(COMPLEX));

x[0].real=1.0;

x[1].imag=0.0;

for(i=1;

nn;

i++)

x[i].real=(float)exp(-i);

x[i].imag=0.0;

for(i=0;

i++)xtemp[i]=x[i];

fft(x,mm);

Finished!

\n\n"

kXR(K)XI(K)|X(K)|Q(k)\n"

y=x[i].real*x[i].real+x[i].imag*x[i].imag;

if(x[i].real!

=0)

if(x[i].imag==0.0)

if(x[i].real>

0)q=0.0;

if(x[i].real<

0)q=4.0*(atan(1.0));

q=atan(x[i].imag/x[i].real);

printf("

%4d%9f%9f%9f%9f\n"

i,x[i].real,x[i].imag,sqrt(y),q);

通过四次实验,我们并没有完成太多的任务,只是简单的验证了一下书上的一些代码,我认为这门课程还是很有必要多学习一下的,这对于以后进行有关系统建立,信号处理,等都有十分大的帮助,所以我们在平时也应该多学习有关该软件的有关使用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1