一、離散信號的表示
1、一個離散信號需要用兩個向量來表示:
(1)離散信號的幅值
(2)離散信號的位置信息
2、用MATLAB實現離散信號的可視化
(1)不能利用符號運算來表示
(2)繪制離散信號一般采用stem命令。
(3)x(n)——stem(n,x)
3、一個demo:
clear all; x=[-1,2,3,3,5,-4]; n=[-2,-1,0,1,2,3]; figure(1) stem(n,x),axis([-2.5,3.5,-4.5,5.5])
二、一些常用的離散信號
1、單位沖激序列的表示
function [x,n] = impseq(k1,k2,k0)
%k1,k2表示序列的起點和終點(只能表示有限序列)
%k0表示沖激點。 n = [k1:k2]; x = [(n-k0) == 0];
2、單位階躍序列的表示:
function [x,n] = stepseq(n1,n2,n0)
%n1,n2表示序列的起點和終點(只能表示有限序列)
n = [n1:n2]; x = [(n-n0) >= 0]
三、離散信號的時域運算、時域變換
1、離散序列的相加:
function [y,n] = sigadd(x1,n1,x2,n2) % implements y(n) = x1(n)+x2(n) % ----------------------------- % [y,n] = sigadd(x1,n1,x2,n2) % y = sum sequence over n, which includes n1 and n2 % x1 = first sequence over n1 % x2 = second sequence over n2 (n2 can be different from n1) % n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n) y1 = zeros(1,length(n)); y2 = y1; % initialization y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of y y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y y = y1+y2; % sequence addition
2.離散序列的相乘:
function [y,n] = sigmult(x1,n1,x2,n2) n = min(min(n1),min(n2)):max(max(n1),max(n2)); y1 = zeros(1,length(n)); y2 = y1; y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; y = y1 .* y2;
3、離散序列的反折
function [y,n] = sigfold(x,n) % implements y(n) = x(-n) % ----------------------- % [y,n] = sigfold(x,n) % y = fliplr(x); n = -fliplr(n);
4、離散序列的平移
function [y,n] = sigshift(x,m,n0) % implements y(n) = x(n-n0) % ------------------------- % [y,n] = sigshift(x,m,n0) % n = m+n0; y = x;
5、離散序列的倒相
function [y,n] = sigrev(x,m)
n = m; y =-x;
四、離散系統的響應求解
1、零狀態、零輸入、全響應
2、沖激響應、階躍響應
3、一個demo
%ex_6 clear all; n=0:50; x=cos(n*pi/3); a=[1,0.95,0.9025]; b=[1/3,1/3,1/3]; yi=[2,3]; xi=0; xic=filtic(b,a,yi,xi); % y1=filter(b,a,zeros(1,length(n)),xic); y2=filter(b,a,x); y3=filter(b,a,x,xic); figure(1) subplot(3,1,1),stem(n,y1),title('零輸入響應') subplot(3,1,2),stem(n,y2),title('零狀態響應') subplot(3,1,3),stem(n,y3),title('全響應') figure(2) subplot(2,1,1),impz(b,a),title('沖激響應') subplot(2,1,2),stepz(b,a),title('階躍響應') % u1=impseq(0,50,0); u2=stepseq(0,50,0); y4=filter(b,a,u1); y5=filter(b,a,u2); n=0:50; figure(3) subplot(2,1,1),stem(n,y4),title('沖激響應'); subplot(2,1,2),stem(n,y5),title('階躍響應');
五、離散系統的卷積
function [f,k] = dconv(f1,f2,k1,k2) k0= k1(1)+k2(1); k3=length(f1)+length(f2)-2+k0; k=k0:k3; f = conv(f1,f2);