1. 知识回顾
(1)信号的分类:
- 确定信号与随机信号; 周期信号与非周期信号;
- 周期信号在时间上必须是无始无终的
- $f(t) = f(t + T)$
- $f[k] = f[k + N]$
- 连续时间信号和离散时间信号;
- 连续信号是指在信号的定义域内,除若干个第一类间断点外,对于任意时刻都由确定的函数值的信号
- 离散信号是指在信号的定义域内,只在某些不连续规定的时刻给出函数值,而在其他时刻没有给出函数的信号
- 能量信号、功率信号与非功率非能量信号;
- 时限与频限信号;
- 物理可实现信号。
(2)信号能量:\[E = \mathop {\lim }\limits_{T \to \infty } \int_{ - T}^T {{f^2}(t{\rm{)dt}}} \]
\[P = \mathop {\lim }\limits_{T \to \infty } \frac{1}{{2T}}\int_{ - T}^T {{f^2}(t{\rm{)dt}}} \]
\[E = \mathop {\lim }\limits_{N \to \infty } \sum\limits_{k = - N}^N {{{\left| {f[k]} \right|}^2}} \]
\[P = \mathop {\lim }\limits_{N \to \infty } \frac{1}{{2N + 1}}\sum\limits_{k = - N}^N {{{\left| {f[k]} \right|}^2}} \]
- 能量信号:$0 < E < \infty $,$P = 0$;
- 功率信号:$0 < P < \infty $,$E = \infty $。
(3)冲激函数的性质
- 加权特性(筛选特性):\[f(t)\delta (t - {t_0}) = f({t_0})\delta (t - {t_0})\]
- 取样特性:\[\int_{ - \infty }^{ + \infty } {f(t)\delta (t - {t_0})} = f({t_0})\]
- 偶函数:\[f(t) = f( - t)\]
- 展缩特性:\[\delta (at) = \frac{1}{{\left| a \right|}}\delta (t)\]\[\delta (at - {t_0}) = \frac{1}{{\left| a \right|}}\delta (t - \frac{{{t_0}}}{a})\]
- 导数及其特性。
(4)正弦
- 两个频率相同的正弦信号相加,即使其振幅和相位各不相同,但相加后结果仍是原频率的正弦信号;
- 若一个正弦信号的频率是另一个正弦信号频率的整数倍时,则合成信号是一个非正弦周期信号,其周期等于基波的周期。
正弦型序列:\[f[k] = A\sin ({\Omega _0}k + \varphi )\]
- $2\pi /{\Omega _0}$是正整数:周期序列,周期为$N$;
- $2\pi /{\Omega _0}$为有理数,$2\pi /{\Omega _0} = N/m$:周期序列,周期$N = m(2\pi /{\Omega _0})$;
- $2\pi /{\Omega _0}$为无理数:非周期序列,但包络仍为正弦函数。
(5)抽样信号\[Sa(t) = \frac{{\sin t}}{t}\]
- 偶函数;
- $Sa(0) = 1$;
- $t = k\pi $为其零点;
- $\int_{ - \infty }^{ + \infty } {Sa(t){\rm{dt}} = \pi } $;
- $\mathop {\lim }\limits_{t \to \pm \infty } Sa(t) = 0$。
(6)信号的分解
- 分解为直流分量与交流分量;
- 奇偶分解;
- 分解为实部和虚部;
- 分解为基本信号的有限项之和;
- 因子分解;
- 连续信号分解为矩形脉冲序列;
- 正交分解。
(7)系统
- 线性系统与非线性系统:线性包含齐次性和叠加性两个概念;
- 时不变系统与时变系统:时不变系统的参数与时间无关而为一个常数,它的输入与输出的特性不随时间的起点而变化;
- 因果系统与非因果系统:因果系统是指响应不出现于激励之前的系统;
- 稳定系统与不稳定系统:若输入有界,则输出有界的系统称为稳定系统(BIBO准则);
- 记忆系统与无记忆系统:记忆系统的输出不仅决定于当前时刻的输入,而且与它过去的状态(历史)有关。
2. 连续时间信号的MATLAB实现
2.1 正弦信号
A=1; w0=2*pi; phi=pi/6; t=0:0.001:4; ft=A*sin(w0*t+phi); plot(t,ft);
2.2 指数信号
%实指数信号 A=1; a=-0.4; t=0:0.001:10; ft=A*exp(a*t); plot(t,ft); title('实指数信号');
function xzsu(w,n1,n2,a) %n1:绘制波形的起始时间 %n2:绘制波形的终止时间 %w:虚指数信号的角频率 %a:虚指数信号的幅度 t=n1:0.01:n2; X=a*exp(1i*w*t); Xr=real(X); Xi=imag(X); Xa=abs(X); Xn=angle(X); subplot(2,2,1);plot(t,Xr);axis([n1,n2,-(max(Xa)+0.5),max(Xa)+0.5]);title('实部'); subplot(2,2,3);plot(t,Xi);axis([n1,n2,-(max(Xa)+0.5),max(Xa)+0.5]);title('虚部'); subplot(2,2,2);plot(t,Xa);axis([n1,n2,0,max(Xa)+1]);title('模'); subplot(2,2,4);plot(t,Xn);axis([n1,n2,-(max(Xn)+1),max(Xn)+1]);title('相角'); end
%虚指数信号 xzsu(pi/4,0,15,2)
%复指数信号 t=0:0.01:3; a=-1;b=10; z=exp((a+1i*b)*t); subplot(2,2,1);plot(t,real(z));title('实部'); subplot(2,2,3);plot(t,imag(z));title('虚部'); subplot(2,2,2);plot(t,abs(z));title('模'); subplot(2,2,4);plot(t,angle(z));title('相角');
2.3 单位冲激信号
close all t1=-1; t2=5; t0=0; dt=0.01; t=t1:dt:t2; n=length(t); x=zeros(1,n); x(1,(-t0-t1)/dt+1)=1/dt; stairs(t,x); axis([t1,t2,0,1.2/dt]); title('单位冲激信号');
2.4 单位阶跃信号
function f=heaviside(t) f=(t>0); end
t=-1:0.001:3; y=heaviside(t); plot(t,y); axis([-1,3,-0.1,1.2]); title('单位阶跃信号');
2.5 符号函数
t=-5:0.01:5; y=sign(t); plot(t,y); axis([-5,5,-1.1,1.1]); title('符号函数');
2.6 抽样函数
t=-3*pi:pi/1000:3*pi; ft=sinc(t/pi); plot(t,ft); title('抽样信号');
2.7 矩形脉冲信号
- ft=rectpuls(t, width)用以产生一个幅值为1,宽度为width,相对于t=0点左右对称的脉冲信号。
t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); plot(t,ft); grid on; axis([0,4,-0.5,1.5]); title('矩形脉冲信号');
2.8 三角波脉冲信号
- y=tripuls(t, width, skew)用以产生一个最大幅值为1,宽度为width,斜度为skew的三角波信号;
- 斜度skew是一个介于-1到1之间的数,表示最大值所对应的横坐标位置,最大值出现在t=(width/2)×skew的位置。
t=-3:0.001:3; ft=tripuls(t,4,0.5); plot(t,ft); title('三角波脉冲信号');
2.9 周期性矩形脉冲和三角波脉冲信号
- y=square(t, DUTY)用以产生一个周期为2π,幅值为±1的周期性方波信号,DUTY表示占空比;
- y=sawtooth(t, WIDTH)用以产生一个周期为2π,幅值为±1的周期性三角波信号,WIDTH在0到1之间,表示最大值出现的位置。
t=-0.0625:0.0001:0.0625; y=square(2*pi*30*t,75); plot(t,y);axis([-0.0625,0.0625,-1.5,1.5]); grid on;
t=-5*pi:pi/100:5*pi; ft=sawtooth(t,0.5); plot(t,ft); axis([-16,16,-1.5,1.5]); grid on;
3. 离散时间信号的MATLAB实现
离散信号与连续信号的标示方法类似,只不过使用stem函数而不是plot函数来画出序列的波形。
3.1 正弦序列
k=0:39; fk=sin(pi/6*k); stem(k,fk); title('正弦序列');
3.2 指数序列
function dszsu(c,a,k1,k2) %c:指数序列的幅度 %a:指数序列的底数 %k1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=k1:k2; x=c*(a.^k); stem(k,x,'filled'); hold on; plot([k1,k2],[0,0]); hold off; end
subplot(2,2,1);dszsu(1,5/4,0,20);xlabel('k');title('f1[k]'); subplot(2,2,2);dszsu(1,3/4,0,20);xlabel('k');title('f2[k]'); subplot(2,2,3);dszsu(1,-5/4,0,20);xlabel('k');title('f3[k]'); subplot(2,2,4);dszsu(1,-3/4,0,20);xlabel('k');title('f4[k]');
function dxzsu(n1,n2,w) %n1:绘制波形的起始时间序号 %n2:绘制波形的终止时间序号 %w:虚指数序列的角频率 k=n1:n2; f=exp(1i*w*k); Xr=real(f); Xi=imag(f); Xa=abs(f); Xn=angle(f); subplot(2,2,1);stem(k,Xr,'filled');title('实部'); subplot(2,2,3);stem(k,Xi,'filled');title('虚部'); subplot(2,2,2);stem(k,Xa,'filled');title('模'); subplot(2,2,4);stem(k,Xn,'filled');title('相角'); end
dxzsu(0,20,pi/4);
dxzsu(0,20,2);
只有当虚指数序列的角频率满足上文1(4)提到的条件时,信号的实部、虚部和相角都为周期序列,否则为非周期序列。
function dfzsu(n1,n2,r,w) %n1:绘制波形的起始时间序号 %n2:绘制波形的终止时间序号 %w:复指数序列的角频率 %r:指数序列的底数 k=n1:n2; f=(r*exp(1i*w)).^k; Xr=real(f); Xi=imag(f); Xa=abs(f); Xn=angle(f); subplot(2,2,1);stem(k,Xr,'filled');title('实部'); subplot(2,2,3);stem(k,Xi,'filled');title('虚部'); subplot(2,2,2);stem(k,Xa,'filled');title('模'); subplot(2,2,4);stem(k,Xn,'filled');title('相角'); end
dfzsu(0,20,1.2,pi/4);
dfzsu(0,20,0.8,pi/4);
3.3 单位冲激序列
k=-30:30; delta=[zeros(1,30),1,zeros(1,30)]; stem(k,delta); title('单位冲激序列');
3.4 单位阶跃序列
k=-30:30; uk=[zeros(1,30),ones(1,31)]; stem(k,uk); title('单位阶跃序列');
4. 连续时间信号的基本运算与波形变换
相加
- s=symadd(f1,f2)
- ezplot(s)
相乘
- w=symmul(f1,f2)
- ezplot(w)
微分与积分
- h=0.001;
- x=0:h:pi;
- y=diff(sin(x.^2))/h;
- Quad('function_name',a,b);
时移、反折、尺度变换
- y=subs(f,t,t-t0);%时移
- y=subs(f,t,-t);%反折
- y=subs(f,t,a*t);%尺度变换
- y=-f;%倒相变换
4.1 平移、尺度变换
clear; t=-15:0.01:20; f=-2*(stepfun(t,-3)-stepfun(t,0))+ ... 2*t.*(stepfun(t,0)-stepfun(t,2))+ ... (-2*t+8).*(stepfun(t,2)-stepfun(t,4)); subplot(2,2,1);plot(t,f);axis([-6,6,-3,5]);grid on;text(-2,3,'f(t)'); subplot(2,2,2);plot(t+1,f);axis([-6,6,-3,5]);grid on;text(-2,3,'f(t-1)'); subplot(2,2,3);plot(0.5*t-2,f);axis([-6,6,-3,5]);grid on;text(1,3,'f(2t+4)'); subplot(2,2,4);plot(2-t,f);axis([-6,6,-3,5]);grid on;text(-3,3,'f(2-t)');
4.2 积分与微分
h=0.001; t=-3:h:3; ft=tripuls(t,4,0.5); y1=diff(ft)/h; figure(1); for x=1:length(t) y2(x)=sum(ft(1:x))/1000; end subplot(2,2,1);plot(t,ft); title('f(t)'); subplot(2,2,2);plot(t(1:length(t)-1),y1); title('df(t)/dt'); subplot(2,2,3);plot(t,y2); axis([-3,3,0,2.5]); title('integral of f(t)');
4.3 信号的算数运算
syms t; f1=str2sym('(-t+4)*(heaviside(t)-heaviside(t-4))'); subplot(3,2,1);ezplot(f1);title('f1(t)'); f2=str2sym('sin(2*pi*t)'); subplot(3,2,2);ezplot(f2);title('f2(t)'); y1=subs(f1,t,-t); f3=f1+y1; subplot(3,2,3);ezplot(f3);title('f3(t)=f1(t)+f1(-t)'); f4=-f3; subplot(3,2,4);ezplot(f4);title('f4(t)=-f3(t)'); f5=f2*f3; subplot(3,2,5);ezplot(f5);title('f5(t)=f2(t)*f3(t)'); f6=f1*f2; subplot(3,2,6);ezplot(f6);title('f6(t)=f1(t)*f2(t)');
5. 离散序列的基本运算与波形变换
5.1 相加
function [f,k]=lsxj(f1,f2,k1,k2) %离散信号的相加,f(k)=f1(k)+f2(k) %f1、f2、k1、k2分别是参加运算的两离散序列及其对应的时间向量 %f和k返回的是求和得到的离散序列及时间向量 k=min(min(k1),min(k2)):max(max(k1),max(k2)); s1=zeros(1,length(k)); s2=s1; s1(find((k>=min(k1))&(k<=max(k1))==1))=f1; s2(find((k>=min(k2))&(k<=max(k2))==1))=f2; f=s1+s2; stem(k,f,'filled'); axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]); end
f1=-2:2; k1=-2:2; f2=[1,1,1]; k2=-1:1; subplot(2,2,1);stem(k1,f1);axis([-3,3,-2.5,2.5]);title('f1[k]'); subplot(2,2,2);stem(k2,f2);axis([-3,3,-2.5,2.5]);title('f2[k]'); subplot(2,2,3);[f,k]=lsxj(f1,f2,k1,k2); title('f[k]=f1[k]+f2[k]')
5.2 相乘
function [f,k]=lsxc(f1,f2,k1,k2) %离散信号的相乘,f(k)=f1(k)*f2(k) %f1、f2、k1、k2分别是参加运算的两离散序列及其对应的时间向量 %f和k返回的是求积得到的离散序列及时间向量 k=min(min(k1),min(k2)):max(max(k1),max(k2)); s1=zeros(1,length(k)); s2=s1; s1(find((k>=min(k1))&(k<=max(k1))==1))=f1; s2(find((k>=min(k2))&(k<=max(k2))==1))=f2; f=s1.*s2; stem(k,f,'filled'); axis([(min(min(k1),min(k2))-1),(max(max(k1),max(k2))+1),(min(f)-0.5),(max(f)+0.5)]); end
f1=-2:2; k1=-2:2; f2=[1,1,1]; k2=-1:1; subplot(2,2,1);stem(k1,f1);axis([-3,3,-2.5,2.5]);title('f1[k]'); subplot(2,2,2);stem(k2,f2);axis([-3,3,-2.5,2.5]);title('f2[k]'); subplot(2,2,3);[f,k]=lsxc(f1,f2,k1,k2); title('f[k]=f1[k]*f2[k]')
5.3 差分和求和
-
y=diff(f);
- y=sum(f(k1:k2));
5.4 时移、反折、尺度变换
clear; k=-12:12; k1=2.*k+4; f=-[stepfun(k,-3)-stepfun(k,-1)]+ ... 4.*[stepfun(k,-1)-stepfun(k,0)]+ ... 0.5*k.*[stepfun(k,0)-stepfun(k,11)]; f1=-[stepfun(k1,-3)-stepfun(k1,-1)]+ ... 4.*[stepfun(k1,-1)-stepfun(k1,0)]+ ... 0.5*k1.*[stepfun(k1,0)-stepfun(k1,11)]; subplot(2,2,1);stem(k,f);axis([-12,12,-1,6]); grid on; text(-8,3,'f[k]'); subplot(2,2,2);stem(k+1,f);axis([-12,12,-1,6]); grid on; text(-9.5,3,'f[k-1]'); subplot(2,2,3);stem(k,f1);axis([-12,12,-1,6]); grid on; text(-8,3,'f[2k+4]'); subplot(2,2,4);stem(2-k,f);axis([-12,12,-1,6]); grid on; text(5.5,3,'f[2-k]');
6. 信号的分解
6.1 连续时间信号的奇偶分解
t=-2.5:0.01:2.5; subplot(2,2,1); y=real((1-(t-1).^2).^0.5); plot(t,y,'k'); axis equal; grid on; text(-0.75,0.75,'x(t)'); subplot(2,2,3); ye=real(0.5*((1-(1-t).^2).^0.5+ ... (1-(-t-1).^2).^0.5)); plot(t,ye,'k'); axis equal; grid on; text(-0.75,0.75,'xe(t)'); subplot(2,2,4); yo=real(0.5*((1-(1-t).^2).^0.5- ... (1-(-t-1).^2).^0.5)); plot(t,yo,'k'); axis equal; grid on; text(-0.75,0.75,'xo(t)');
6.2 离散序列的奇偶分解
function [xeven,xodd,m]=sigevenodd(x,n) m1=max(abs(n)); m=-m1:m1; x1=zeros(1,length(m)); for i=1:length(m) x1(find((m==n(i))==1))=x(i); end for i=1:length(m) xeven(i)=(x1(find((m==n(i))==1))+x1(find((m==-n(i))==1)))/2; xodd(i)=(x1(find((m==n(i))==1))-x1(find((m==-n(i))==1)))/2; end end
n0=0; n1=-10; n2=10; n=n1:n2; x=[(n-n0)>=0]; subplot(2,2,1); stem(n,x); xlabel('n');ylabel('x(n)');title('Step Sequence'); grid on; [xeven,xodd,m]=sigevenodd(x,n); subplot(2,2,3); stem(m,xeven); xlabel('m');ylabel('x even(n)');title('Even Part'); grid on; subplot(2,2,4); stem(m,xodd); xlabel('m');ylabel('x odd(n)');title('Odd Part'); grid on;
