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

c615fdfcc27ae2be22f8421092cc4bed.png

二、一些常用的离散信号

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

90b9e50d7103b752fd61650dadd0bbdc.png

2、冲激响应、阶跃响应

0c107bc19206839537cc94c198d8927b.png

3、一个demo

d52f52ced8770b5ce0062440f4e4cbc9.png

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

1aef27131264f4401e56c0ed33d056c8.png102a6691079f1cf9468110ddd830127b.png

7a2ec4c56abc8ccb09d2a9f231860be2.png

五、离散系统的卷积

7a2c335dca38da535e4bb0551c0d83f5.png

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

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,可以通过使用plot函数来可视化离散信号。首先,我们需要创建信号离散时间序列。假设我们有一个离散信号x,对应的时间序列为t。 例如,我们要显示一个简单的正弦波信号,可以选择一个时间段,并计算对应的离散时间序列t,然后使用正弦函数计算对应的信号值x。 ```MATLAB t = 0:0.1:10; % 时间序列,步长为0.1,时间从0到10 x = sin(t); % 正弦函数生成信号 plot(t, x); % 绘制离散信号 ``` 以上代码将生成离散时间序列t和对应信号值x,并使用plot函数将它们可视化。 卷积是信号处理中常用的操作之一,可以在MATLAB中使用conv函数实现。假设我们有两个离散信号x和h,要计算它们的卷积。 ```MATLAB x = [1, 2, 3, 4]; % 第一个离散信号 h = [0.5, 0.5]; % 第离散信号 y = conv(x, h); % 计算卷积 ``` 以上代码将使用conv函数计算信号x和h的卷积,并将结果保存在y变量中。 在MATLAB中,我们可以使用stem函数来可视化离散信号的卷积结果。stem函数会在离散时间点上显示离散信号的幅度。 ```MATLAB t = 0:length(y)-1; % 卷积结果的时间序列 stem(t, y); % 绘制离散信号的卷积结果 ``` 以上代码将生成卷积结果的时间序列t,并使用stem函数将卷积结果可视化。 综上所述,在MATLAB中可通过plot函数可视化离散信号,通过conv函数计算信号的卷积,并使用stem函数可视化卷积结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值