实验一报告.docx

上传人:b****5 文档编号:7387589 上传时间:2023-01-23 格式:DOCX 页数:14 大小:99.46KB
下载 相关 举报
实验一报告.docx_第1页
第1页 / 共14页
实验一报告.docx_第2页
第2页 / 共14页
实验一报告.docx_第3页
第3页 / 共14页
实验一报告.docx_第4页
第4页 / 共14页
实验一报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验一报告.docx

《实验一报告.docx》由会员分享,可在线阅读,更多相关《实验一报告.docx(14页珍藏版)》请在冰豆网上搜索。

实验一报告.docx

实验一报告

离散信号的MATLAB产生和图形显示实验报告

目录

实验一2

1、实验内容2

2、编程原理、思路和公式2

3、程序脚本,并注释2

4、仿真结果、图形3

5、结果分析和结论4

6、遇到的问题、解决方法及收获4

实验二5

1、实验内容5

2、编程原理、思路和公式5

3、程序脚本,并注释5

4、仿真结果、图形7

5、遇到的问题、解决方法及收获7

实验三8

1、实验内容8

2、编程原理、思路和公式8

3、程序脚本,并注释8

4、仿真结果、图形11

5、遇到的问题、解决方法及收获13

实验一

1、实验内容

编写程序产生序列

其中

画出序列的图形,说明信号时域振荡程度的变化,理解数字信号的“低频”和“高频”的概

念。

2、编程原理、思路和公式

1、Matlab自带余弦函数,只需调用函数

即可,即

2、因为有不同的的

值,为了简便,用一个一行八列的矩阵来表示

的所有的取值,然后用一个for循环来调用。

3、程序脚本,并注释

clc;

clear%清除原有的东西

n=0:

1:

99;%定义n的范围

w0=[0,pi/8,pi/4,pi/2,pi,7*pi/4,15*pi/8,2*pi];%表示w0的矩阵

for(i=1:

4)%for循环语句来调用不同的w0

x=cos(w0(i)*n);%定义序列

subplot(4,1,i);%一行四列方便观察

stem(n,x,'k.'),gridon;%画图

xlabel('n');%横轴为n

ylabel('x(n)');%纵轴为x(n)

title('x(n)=cos(w0*n)');%图片的名字为x(n)=cos(w0*n)

end

figure%另作一幅图

for(i=5:

8)%for循环语句来调用不同的w0

x=cos(w0(i)*n);%定义序列

subplot(4,1,(i-4));%一行四列方便观察

stem(n,x,'k.'),gridon;%画图

xlabel('n');%横轴为n

ylabel('x(n)');%纵轴为x(n)

title('x(n)=cos(w0*n)');%图片的名字为x(n)=cos(w0*n)

end

4、仿真结果、图形

图一:

NO1

仿真图

5、结果分析和结论

从图中可以看出,从0~

频率越来越高,

频率越来越低,在

时频率最高。

6、遇到的问题、解决方法及收获

问题及解决:

1、最开始挨个给

赋值,但是那样程序很长很冗杂,然后我就想到用for循环来做

2、最初解决循环时,直接用

去乘n,但是

是1*7的矩阵,n是1*100的,两者没法相乘,后来用for循环,挨个调用

,这样就可以了。

3、作在同一个图里,纵轴很短,不好看,所以用figure指令,把图画在了两张图上。

收获:

1、调用一个数组的各个元素,需要用for循环

2、同一个程序里画多张图,用figure指令

3、把默认的画图里的圈圈换成点用’.’指令,换颜色也可以,如’k.’是黑色,’r.’是红色

实验二

1、实验内容

画出下列序列的图形,进行计算并用图形显示结果。

计算

2、编程原理、思路和公式

x(n)是三角函数,可以直接调用,但是y(n)是矩形序列和单位冲击序列的和,没有现成的序列,所以先用子函数写好y(n)的两个函数,然后调用函数。

y的取值范围是-11到16,但是要求x是从-5到25的,两序列相加是需要统一长度,需要长度统一和补零

3、程序脚本,并注释

function[R_N]=s2z(ny1,N,m,ny,L)

R_N=zeros(1,L);%给R_N赋初值

R_N(-ny1+1-N+1-m:

-ny1+1-m)=1;%定义R_10(-n-m)

end

function[delta]=sy2z(ny1,L,m,ny)

delta=zeros(1,L);%给delta赋初值

delta(-ny1+17)=1;%定义单位冲击函数

end

clearall;%清除全部

nx1=-5;nx2=25;nx=nx1:

nx2;%规定nx的范围

x=sin(pi/3*nx)+3*cos(nx*pi/4);%x的函数

subplot(3,1,1);%三行一列x(n)在第一个

stem(nx,x,'k.');%画图

xlabel('n');ylabel('x(n)');

title('x(n)=sin(\pi/3*n)+3*cos(n*\pi/4)');%x(n)的横纵轴及图片的名字

ny1=-12;ny2=25;ny=ny1:

ny2;%规定ny的范围

m=2;%R_N(-n-m)m的取值

L=length(ny);%ny的长度

N=10;%R_N的长度

[R_N]=s2z(ny1,N,m,ny,L);%调用矩形序列

[delta]=sy2z(ny1,L,m,ny);%调用冲击序列

y=R_N+delta;%y的函数

subplot(3,1,2);%三行一列y(n)在第2个

stem(ny,y,'k.');%画图

xlabel('n');ylabel('y(n)');title('y(n)=R_1_0(-n-2)+\delta(n-16)');%y(n)的横纵轴及图片的名字

nz1=min(nx1,ny1);%nz的起点为ny和的最小值

nz2=max(nx2,ny2);%nz的终点为ny和的最大值

nz=nz1:

nz2;%统一x和y的长度为nz

xa=[zeros(1,abs(nz1-nx1))xzeros(1,abs(nz2-nx2))];%补零定义新的函数xa

ya=[zeros(1,abs(nz1-ny1))yzeros(1,abs(nz2-ny2))];%补零定义新的函数ya

z=xa+ya;%两函数相加

subplot(3,1,3);%三行一列z(n)在第3个

stem(nz,z,'k.');%画图

xlabel('n');ylabel('z(n)');title('z(n)=x(n)+y(n)');%z(n)的横纵轴及图片的名字

4、仿真结果、图形

5、遇到的问题、解决方法及收获

问题及解决:

1、R_N(-ny1+1-N+1-m:

-ny1+1-m)=1,括号内的是数组内元素是第几个,开始误以为是n的取值,后来查书改正。

2、X和y两数组相加必须长度相等,开始没有注意,频繁报错,后来意识到后用老师PPT给的补零相加的方式相加。

3、函数定义时忘记了函数名前后不许一致,在错误提示下改正。

4、画图时自带的那个带蓝圈圈很大,图看起来很奇怪,查matlab的书'k.'改成黑色的点,这样看起来方便多了。

收获:

1、两数组相加必须是长度相等。

2、数组定义只能指出是第几个元素,而不能指出n的取值。

实验三

1、实验内容

画出四种理想滤波器的幅频特性图(一个周期)和单位冲激响应波形图(根据公式画图)。

其中

角频率间隔

,时间间隔

2、编程原理、思路和公式

1、根据四种理想滤波器的幅频特性函数直接画图,用for循环写数组,用if条件语句规定0和1的点,然后计算其单位冲击响应函数,然后用函数直接画图。

2、为了好看,画成四张图,每种滤波器及其单位冲击响应画在同一张图上

3、画单位冲击响应时,因为零点没有意义,所以需要另外定义赋值零点

3、程序脚本,并注释

w=-pi:

(2*pi/256):

pi;%规定w的取值范围及间隔

n1=-50;n2=50;n=n1:

1:

n2;%规定n的取值范围及间隔

wc1=0.3*pi;

wc2=0.8*pi;

w1=0.5*pi;w2=0.7*pi;

w3=0.65*pi;w4=0.8*pi;%一些频率值

W=length(w);%W为w的长度

for(i=1:

W)%for循环表示理想低通滤波器幅频特性

ifabs(w(i))<=wc1

x1(i)=1;%当|w|<=wc1时x1=1

elsex1(i)=0;%当不满足条件时x1=0

end%if语句结束

end;%for语句结束

subplot(2,1,1);plot(w,x1);%画理想低通滤波器幅频特性图

axis([-4401.5]);%规定横纵轴的取值范围

xlabel('w(rad)');

ylabel('h_l_p(exp(j*w)');title('理想低通滤波器幅频特性');

y1=sin(wc1*n)./(pi*n);%理想低通滤波器的单位冲击响应

y1(-n1+1)=0.3;%补充n=0的点的值

subplot(2,1,2);

stem(n,y1,'.');%画理想低通滤波器的单位冲击响应

xlabel('n');

ylabel('h_l_p(n)');title('单位冲击响应h_l_p(n)=sin(0.3*\pi*n)./(\pi*n)');

figure%再画一张图

for(i=1:

W)%for循环表示理想高通滤波器幅频特性

ifabs(w(i))>=wc2&abs(w(i))<=pi

x2(i)=1;%当wc2<=|w|<=pi时x2=1

elsex2(i)=0;%当不满足条件时x2=0

end%if语句结束

end;%for语句结束

subplot(2,1,1);

plot(w,x2);

axis([-4401.5]);%规定横纵轴的取值范围

xlabel('w(rad)');

ylabel('h_l_p(exp(j*w)');title('理想高通滤波器幅频特性')

y2=(-sin(wc2*pi*n)+sin(pi*n))./(pi*n);%理想高通滤波器的单位冲击响应

y2(-n1+1)=0.2;%补充n=0的点的值

subplot(2,1,2);

stem(n,y2,'.');

xlabel('n');

ylabel('h_l_p(n)');

title('单位冲击响应h_l_p(n)=(-sin(0.8*\pi*n)+sin(\pi*n))./(\pi*n)')

figure%再画一张图

for(i=1:

W)%for循环表示理想带通滤波器幅频特性

ifabs(w(i))>=w1&abs(w(i))<=w2

x3(i)=1;%当w1<=|w|<=w2时x3=1

elsex3(i)=0;%当条件不满足时x3=0

end%if语句结束

end;%for循环结束

subplot(2,1,1);

plot(w,x3);%画理想带通滤波器幅频特性

axis([-4401.5]);;%规定横纵轴的取值范围

xlabel('w(rad)');

ylabel('h_l_p(\exp(j*w)');title('理想带通滤波器幅频特性')

y3=(-sin(w1*pi*n)+sin(w2*pi*n))./(pi*n);%理想带通滤波器的单位冲击响应

y3(-n1+1)=0.2;%补充n=0的点的值

subplot(2,1,2);

stem(n,y3,'.');

xlabel('n');

ylabel('h_l_p(n)');title('单位冲击响应h_l_p(n)=(sin(0.7*\pi*n)-sin(0.5*\pi*n))./(\pi*n)')

figure%再画一张图

for(i=1:

W)%for循环表示理想带阻滤波器幅频特性

ifabs(w(i))>=0&abs(w(i))<=w3|abs(w(i))>=w4&abs(w(i))<=pi

x4(i)=1;%当|w|<=w3|w4<=|w|<=w4时x4=1

elsex4(i)=0;%当条件不满足时x4=0

end%if语句结束

end;%for语句结束

subplot(2,1,1);

plot(w,x4);

axis([-4401.5]);%规定横纵轴的取值范围

xlabel('w(rad)');

ylabel('h_l_p(exp(j*w)');title('理想带阻滤波器幅频特性')

y4=(-sin(w4*pi*n)+sin(pi*n)+sin(w3*pi*n))./(pi*n);%理想带阻滤波器的单位冲击响应

y4(-n1+1)=0.85;%补充n=0的点的值

subplot(2,1,2);

stem(n,y4,'.');

xlabel('n');

ylabel('h_l_p(n)');title('单位冲击响应h_l_p(n)=(-sin(0.8*\pi*n)+sin(\pi*n)+sin(0.65*\pi*n))./(\pi*n);')

4、仿真结果、图形

5、遇到的问题、解决方法及收获

问题、解决

1、矩阵相除用“./”,开始忘记了,直接用了“/”使程序出错。

2、用if语句时直接用y=1,这只表示一个数,无法表示一个数组,而y是一个数组,所以用for循环来表示一个数组。

3、开始忘记补零,使n=0时,y=0。

后来补上就好了

收获

1、学会了用for循环和if条件语句

2、学会了画连续函数

3、学会了矩阵的相除

4、全面的了解四种理想的滤波器及其单位冲击响应

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

当前位置:首页 > 自然科学 > 天文地理

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

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