一、实验目的
- 充分熟悉函数find、sigshift、sigfold函数的使用;
- 熟悉序列的加、减、乘、除、移位、折叠的计算;
- 能够画出结果的图形。
二、实验步骤
4. 用help查找find、sigshift、sigfold函数的使用情况;
5. 编辑并生成函数sigadd.m(序列相加);
6. 编辑并生成函数sigmult.m(序列相乘);
7. 编辑并生成函数sigshift.m(序列移位);
8. 编辑并生成函数sigfold.m(序列折叠);
9. 编辑并生成实现两序列相乘和相加的程序;
10. 改变坐标尺度重新画图,是图形更加直观;
11. 在命令窗口打出x1,x2,y1,y2的值,并贴进实验报告;
12. 编辑并生成实现序列移位和折叠程序;
13. 在命令窗口打出y1,y2,n2,n3的值,并贴进实验报告;
14. 画出y3=2x1(2-n), y4=x1(3n)的图形,在命令窗口打出y3,y4的值,并贴进实验报告
三、实验结果
15. 用help查找find、sigshift、sigfold函数的使用情况
2. 编辑并生成函数sigadd.m(序列相加)
3. 编辑并生成函数sigmult.m(序列相乘)
- 编辑并生成函数sigshift.m(序列移位)
- 编辑并生成函数sigfold.m(序列折叠)
6 编辑并生成实现两序列相乘和相加的程序
clc;
clear;
x1=[0,1,2,3,4,3,2,1,0];n1=-2:6;
x2=[2,2,0,0,0,-2,-2]; n2=2:8;
[y1,n]=sigmult(x1,n1,x2,n2);
[y2,n]=sigadd(x1,n1,x2,n2);
subplot(2,2,1);stem(n1,x1);title('序列x1')
xlabel('n');ylabel('x1(n)');
subplot(2,2,2);stem(n2,x2);title('序列x2')
xlabel('n');ylabel('x2(n)');
subplot(2,2,3);stem(n,y1);title('两序列相乘')
xlabel('n');ylabel('y1(n)');
subplot(2,2,4);stem(n,y2);title('两序列相加')
xlabel('n');ylabel('y2(n)');
7. 编辑并生成实现序列移位和折叠程序
x1=[0,1,2,3,4,3,2,1,0];n1=-2:6;
[y1,n2]=sigshift(x1,n1,2);
[y2,n3]=sigfold(x1,n1);
subplot(3,1,1);stem(n1,x1);title('序列x1')
xlabel('n');ylabel('x1(n)');
subplot(3,1,2);stem(n2,y1);title('序列移位')
xlabel('n');ylabel('y1(n)');
subplot(3,1,3);stem(n3,y2);title('序列折叠')
xlabel('n');ylabel('y2(n)');
8. 画出y3=2x1(2-n), y4=x1(3n)的图形,在命令窗口打出y3,y4的值,并贴进实验报告
x1=[0,1,2,3,4,3,2,1,0];n1=-2:6;
[k1,n4]=sigfold(x1,n1);
[k2,n5]=sigshift(k1,n4,2);
y3=2*k2;
n6=[fix(-2/3):fix(6/3)];
m=find(fix(n1/3)==n1/3);
y4=x1(m);
subplot(3,1,1);stem(n1,x1);title('ÐòÁÐx1')
xlabel('n');ylabel('x1(n)');
subplot(3,1,2);stem(n5,y3);title('2x1(2-n)')
xlabel('n');ylabel('y3(n)');
subplot(3,1,3);stem(n6,y4);title('x1(3n)')
xlabel('n');ylabel('y4(n)');
四、心得体会
通过这次实验,我对序列的运算有了更深入的了解,明白了其中的原理,也学会了如何编写MATLAB程序来实现序列之间的运算。但是对一些MATLAB特殊函数还是需要加强理解