五、实验内容及结果
编制程序产生单位冲激序列、单位阶跃序列、矩形序列、实指数序列和复指数序列,并利用matlab中的基本图形函数绘制出其图形。
(一)实验一:单位抽样序列。在matlab中可以用以下函数实现单位抽样序列δ(n-n0)(如图1),利用n==0来实现。
?
图1 单位冲激序列
- 实验代码
%单位抽样序列
function [x,n]=impseq(n0,n1,n2)? ?????%产生x(n)=delta(n-n0);n1<=n0<=nn2
????????????????????????????????? %[x,n]=impseq(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
??? error('参数必须满足n1<=n0<=n2')
end
n=[n1:n2];??????????????????????? %x=[zeros(1,(n0-n1),1,zeros(1,(n2-n0))];
x=[(n-n0)==0];
2.实验结果
在命令窗口做以下操作:
(1)输入“n1=-2,n0=3,n2=6”回车;
(2)输入“[x,n]=impseq(n0,n1,n2)”回车;
(3)输入“stem(n,x)”回车。结果如下:
3.碰到的问题及解决方法
问题:由于第一次使用function函数,对function函数不是很了解,在运行结果时没有给输入和输出变量定义初始值,导致运行不出来。
解决方法:在运行程序后输入n1=-2,n0=3,n2=6回车,再输入[x,n]=impseq(n0,n1,n2)回车,最后输入stem(n,x)回车,即可运行出结果。
(二)实验二:单位阶跃序列。在matlab中可以用n>=0来实现u(n-n0)(如图2)。
?
图2 单位阶跃序列
1.实验代码
%单位阶跃序列
function [x,n]=stepseq(n0,n1,n2) ???????%产生x(n)=delta(n-n0);n1<=n0<=nn2
?????????????????????????????????? %[x,n]=stepseq(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
??? error('参数必须满足n1<=n0<=n2')
end
n=[n1:n2];???????????????????????? %x=[zeros(1,(n0-n1),1,zeros(1,(n2-n0))];
x=[(n-n0)>=0];
2.实验结果
在命令窗口做以下操作:
(1)输入“n1=-4,n0=4,n2=10”回车;
(2)输入“[x,n]=stepseq(n0,n1,n2)”回车;
(3)输入“stem(n,x)”回车。结果如下:
(三)实验三:矩形序列。在matlab中可以用两个单位阶跃序列相减来产生矩形序列(如图3)。
图3 矩形序列
1.实验代码
%矩形序列
function [x1,x2,x3,n]=RN(n0,n1,n2)
if((n0<n1)|(n0>n2)|(n1>n2))
??? error('参数必须满足n1<=n0<=n2')
end
n=[n1:n2];
x1=[(n-n0)>=9];
x2=[(n-n0)>=-8];
x3=x2-x1;
2.实验结果
在命令窗口做以下操作:
(1)输入“n1=-10,n0=0,n2=10”回车;
(2)输入“[x1,x2,x3,n]=RN(n0,n1,n2)”回车;
(3)输入“stem(n,x3,'rp');title('矩形序列');”回车。结果如下:
(四)实验四:实指数序列。在matlab中可以用数组运算符“.^”来实现实指数序列。
1.实验代码
%实指数序列
n=0:10;?????????????????????? %定义n的范围
x=(0.8).^n;
stem(n,x,'b.');?????????????? %绘制离散图像
title('实指数序列x=(0.8)^n');? %对图像主题的说明
xlabel('n');????????????????? %对横轴进行说明
ylabel('x=(0.8)^n');????????? %对纵轴进行说明
grid on;????????????????????? %打开图像网格
2.实验结果
?
3.碰到的问题及解决方法
问题:在编写代码时,指数函数x=(0.8)^n少写了一点,运行程序时出现错误。
解决方法:将x=(0.8)^n改为x=(0.8).^n,再重新运行即可出来结果。
(五)实验五:复指数序列。在matlab中可以用编程来实现复指数序列? ,其中a=0.4,b=0.6。
1.实验代码
%复指数序列
n=0:10;?????????????????????? %定义n的范围
x=exp((0.4+0.6j)*n);
%产生实部图像
subplot(2,1,1);?????????????? %定义图像窗口为2x1(2行1列),坐标为(1,1)(第一行第一列)
stem(n,real(x),'b.');???????? %绘制实部离散图像,并设置线为b(蓝色)点线型
axis([-4,10,min(real(x))-1,1.2*max(real(x))]);????? %定义图像1的横轴、纵轴范围
title('复指数序列实部图像');?? %对图像主题的说明
xlabel('n');????????????????? %对横轴进行说明
ylabel('real(x)');??????????? %对纵轴进行说明
grid on;????????????????????? %打开图像网格
%产生虚部图像
subplot(2,1,2);?????????????? %定义图像窗口为2x2(2行2列),坐标为(2,1)(第二行第一列)
stem(n,imag(x),'m.');???????? %绘制虚部离散图像,并设置线为m(洋红色)点线型
axis([-4,10,min(imag(x))-1,1.2*max(imag(x))]);????? %定义图像2的横轴、纵轴范围
title('复指数序列虚部图像');?? %对图像主题的说明
xlabel('n');????????????????? %对横轴进行说明
ylabel('imag(x)');??????????? %对纵轴进行说明
grid on;????????????????????? %打开图像网格
2.实验结果