matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析...

一、离散信号的表示

1、一个离散信号需要用两个向量来表示:

(1)离散信号的幅值

(2)离散信号的位置信息

2、用MATLAB实现离散信号的可视化

(1)不能利用符号运算来表示

(2)绘制离散信号一般采用stem命令。

(3)x(n)——stem(n,x)

3、一个demo:

ebbc308055ab2cb618a64987847674a9.png

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])

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第1张图片

二、一些常用的离散信号

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 fromn1)%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、零状态、零输入、全响应

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第2张图片

2、冲激响应、阶跃响应

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第3张图片

3、一个demo

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第4张图片

%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(‘阶跃响应‘);

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第5张图片matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第6张图片

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第7张图片

五、离散系统的卷积

matlab离散信号分析,MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析..._第8张图片

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);

原文:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4488772.html

你可能感兴趣的:(matlab离散信号分析)