function y=genexp(b,n0,L)
%GENEXP generate an exponential signal:b^n % useage: Y=genexp(A,B,N0,L)
% B: input scalar giving signal ratio between terms % N0:starting index(integer) % L:length of generated signal % Y:output signal Y(1:L) if(L<=0)
error('GENEXP:length not positive') end
nn=n0+[1:L]'-1;
y=b.^nn; % 得到指数序列 y=b^n,n范围[0,L-1] subplot(2,1,1) %把屏分成两部分 stem(nn,y) % 画出y的图形
s=sum(y) % 对产生的指数序列求和 t=b*[0
y]; % 把序列y(n)右移一位,得到 t=b*y(n-1),n范围[0,L] y1=t(1:L); % 得到 y1=b*y(n-1),n范围[0,L-1] subplot(2,1,2)
stem(nn,y1) % 画出y1的图形 end
在命令窗口输入: genexp(0.9,0,21)
得到结果: s =
8.9058 ans
=1.00000.90000.81000.72900.65610.59050.53140.47830.43050.38740.34870.31380.28240.25420.22880.20590.18530.16680.15010.13510.1216
实验结果:
y(n)10.80.60.40.20y(n)=0.9n , 0<=n<=2002468101214161820ny1(n)y1(n)=0.9y(n-1) , 0<=n<=2010.80.60.40.2002468101214161820n
图1-3-abc
结果分析:
(1) 可知,对x[n]?(0.9)n0?n?20的求和结果为s =8.9058,按式(3.6)的计
算结果也为s=8.9058,可见结果相同。
(2) 上图的上部分为y[n]?(0.9)的图形,下部分为y[n]移位后并加权得到的
ny[n]?ay[n?1],比较y(2:L)和a*y(1:L?1)可知两者相同,即指数序列的时移
并不改变其信号特征。
(二)、问题d
利用函数filter产生指数信号: 程序:
a=[1,-0.9]; %y(n)的系数向量 y=filter(1,a,delta(0,20,0,1)); %产生指数信号 nn=0:20; %时间向量 stem(nn,y)
实验结果:
y(n)=0.9n10.8y(n)=0.9n0.60.40.200246810n1214161820
图1-3-d
结果分析:可见图三与图二中的指数信号相同,即可用差分方程产生指数信号。
4、复值信号
程序: >>nn=0:25;
>> y=exp(j*nn/3); %复指数
>> subplot(211) %把屏分成上下两部分,在上部分显示 >> stem(nn,real(y)) %画出实部
>> title('REAL PART'),xlabel('INDEX(n)') %设置图形的标题和x轴 >> subplot(212) %在下部分显示 >> stem(nn,imag(y)) %画出虚部
>> title('IMAGE PART'),xlabel('INDEX(n)') %设置图形的标题和x轴
实验结果:
REAL PART10-10510INDEX(n)IMAGE PART15202510-10510INDEX(n)图1-4
152025
5、复指数信号
a.利用式(3.4)产生z0?0.9?45?时的复指数信号。绘出区间0?n?20上的x[n]的实部和虚部。
b.绘出(a)部分中信号实部与虚部的对应点。结果应该是螺旋线。使用不同的角度?做实验,?越小绘出的螺旋线图越好。
c.产生并绘出下列每一个序列。在每个图中应该在所指定的区间上展开并相应标注水平n轴。
(1)x2[n]?sin(n)17(2)x3[n]?1.1ncos(n?)114(3)x4[n]?0.9ncos(n)11??15?n?25
??0?n?50 ?10?n?20
?d.使用filter函数产生与(c)中相同的信号。绘出y[n]的实部与虚部,并与使用exp函数产生的信号相比较来验证。
e.在一阶差分方程式(3.5)中,令yR[n]和yI[n]表示y[n]的实部与虚部。写出一对实值差分方程以yR[n?1]、yI[n?1]、x[n]、r、cos?、sin?表达yR[n]和yI[n]。
f.写出MATLAB程序以实现这一对方程,并使用该程序产生方程(3.8)的冲激响应,其中
r?1/2,??0,???/4。对于这两种情形,绘出得到的冲激响应的实部,并与由(3.8)式
复值递归式得到的输出的实部相比较。
(一) 问题a、b、c的程序写在同一m文件里 m文件:
function z=complexexp(r,theta,L1,L2,A,phase) % generate a complex exponential signal % theta: phase of generated signal % (L1,L2): range of generated signal
% A: amplitude of generated signal % phase: phase of generated signal nn=L1:L2;
z=A*(r.^nn).*(cos(theta.*nn+phase)+j*sin(theta.*nn+phase)); %复指数 figure(1)
subplot(211) %把屏分成两部分,在第一部分显示 stem(nn,real(z)) %画出实部
title('REAL PART'),xlabel('INDEX(n)') %设置图形的标题和x轴 subplot(212) %在第二部分显示 stem(nn,imag(z)) %画出虚部
title('IMAGE PART'),xlabel('INDEX(n)') %设置图形的标题和x轴 figure(2)
plot(z) %实部与虚部的对应关系 xlabel('real(z)'),ylabel('imag(z)')
对问题a:
在命令窗口中输入:
complexexp(0.9,pi/4,0,20
可得z0?0.9?45?的图形: