信号与系统实验二___MATLAB

离散信号的MATLAB表示

表示离散信号f(k)需要两个行向量,一个表示序号k = [ ],一个表示相应的函数值f = [ ], 画图命令是stem。

例2-1正弦信号序列(注意序列信号的周期性)

k = 0 : 40;
subplot( 2, 1, 1 ),
stem( k, cos( k * pi / 8 ), ‘filled’ ),
title( ‘cos(kpi/8)’ );
subplot( 2, 1, 2 ),
stem( k, cos( k * pi * 2 ), ‘filled’ ),
title( 'cos(k
pi*2)’ );

例2-2单位序列信号δ(k)

编写函数δ(k)m文件

function danweixulie( k1, k2, k0 )%k1、k2为画图范围,k0为脉冲位置
k = k1:k2;
n = length( k );
f = zeros( 1, n );%生成零矩阵
f( 1, -k0 - k1 + 1 ) = 1;%对脉冲位置赋值为1
stem( k, f,‘filled’)
axis( [ k1, k2, 0, 1.5 ] )
title( ‘单位序列δ’)

实现函数danweixulie

danweixulie( -5, 5, 0)

例2-3单位阶跃信号ε(k)

编写函数ε(k)m文件

function jieyuexulie( k1, k2, k0 )
k_zero = k1: -k0-1;
k_one = -k0 : k2;
y_zero = zeros( 1, length( k_zero ) );
y_one = ones( 1, length( k_one ) );
stem(k_one,y_one)
hold on
stem(k_zero,y_zero)
hold off
title( ‘ε(k)’ )
axis( [ k1, k2, 0, 1.5 ] )

实现函数jieyuexulie

jieyuexulie( -3, 8, 0 )

例2-4实指数序列信号

实指数序列m文件

function zhishuxulie( k1, k2, c, a )%k1为起始,k2为终止,c幅度,a底数
k = k1 : k2;
x = c * ( a.^k );
stem( k, x,‘filled’)
hold on
plot( [ k1, k2 ], [ 0, 0 ] )
hold off

实现函数zhishuxulie

zhishuxulie( 0,40,1,5/4 )

离散信号的卷积和

两个有限长的序列f1,f2卷积可调用matlab里的conv,格式f=conv(f1,f2),f为卷积结果,但不显示时间序列,可自己编函数dconv将其显示出来

例2-5

编写dconv.m

function [f,k]=dconv(f1,f2,k1,k2)
%The function of compute f=f1f2
% f: 卷积和序列 f(k)对应的非零样值向量
% k: 序列 f(k)的对应序号向量
% f1: 序列 f1(k)非零样值向量
% f2: 序列 f2(k)的非零样值向量
% k1: 序列 f1(k)的对应序号向量
% k2: 序列 f2(k)的对应序号向量
f=conv(f1,f2) %计算序列 f1 与 f2 的卷积和 f
k0=k1(1)+k2(1); %计算序列 f 非零样值的起点位置
k3=length(f1)+length(f2)-2; %计算卷积和 f 的非零样值的宽度
k=k0:k0+k3 %确定卷积和 f 非零样值的序号向量
subplot(2,2,1)
stem(k1,f1) %在子图 1 绘序列 f1(k)时域波形图
title(‘f1(k)’)
xlabel(‘k’)
ylabel(‘f1(k)’)
subplot(2,2,2)
stem(k2,f2) %在图 2 绘序列 f2(k)时波形图
title(‘f1(k)’)
xlabel(‘k’)
ylabel(‘f2(k)’)
subplot(2,2,3)
stem(k,f); %在子图 3 绘序列 f(k)的波形图
title(‘f(k)f1(k)与 f2(k)的卷积和 f(k)’)
xlabel(‘k’)
ylabel(‘f(k)’)
h=get(gca,‘position’);
h(3)=2.5
h(3);
set(gca,‘position’,h) %将第三个子图的横坐标范围扩为原来的 2.5 倍

运行

f1=[1 2 1];
k1=[-1 0 1];
f2=ones(1,5);
k2=-2:2;
[f, k]=dconv(f1,f2,k1,k2)

在这里插入图片描述

  • 由运行结果和代码可以看出卷积f(k)的起点为f1与f2起点之和,终点为f1与f2终点之和,因此长度为f1与f2长度之和减1 *

离散系统的单位响应

MATLAB中系统响应函数impz

impz( b ,a )%b,a是离散系统的行向量
impz( b, a, n )%b,a是离散系统的行向量,n表示时间范围0~n
impz( b, a, n1, n2 )%时间范围n1~n2
y = impz( b, a, n1, n2 )%由y给出数值序列

在这里插入图片描述

例2-6

a=[1,-1,0.9];
b=[1];
impz(b,a)
%impz(b,a,60)
%impz(b,a,-10:40)

离散系统的零状态响应

例2-7

在这里插入图片描述

a = [ 1 -0.25 0.5 ];
b = [ 1 1 ];
t = 0 : 20;
x = ( 1/2 ).^t;
y = filter( b, a, x )%b为激励系数,a为响应系数,x为激励函数
subplot( 2, 1, 1 )
stem( t, x )
title( ‘输入序列’ )
subplot( 2, 1, 2 )
stem( t, y )
title( ‘响应序列’ )

课后习题

在这里插入图片描述

2

a=[ 2, -2, 1 ];
b=[ 1, 3, 2 ];
impz(b,a);

3

a = [ 1, 1, 0.25 ];
b = [ 1 ];
t = 0 : 15;%范围
x = ( t >= 0 );
y = filter( b, a, x )%b为激励系数,a为响应系数,x为激励函数
subplot( 2, 1, 1 )
stem( t, x )
title( ‘输入序列’ );
subplot( 2, 1, 2 )
stem( t, y )
title( ‘响应序列’ );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值