我是靠谱客的博主 喜悦短靴,最近开发中收集的这篇文章主要介绍matlab系统响应函数_MATLAB信号与系统——离散信号与系统的时域分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

点击上方蓝字关注“公众号”

734cb89682dc2719296f4662d275f0b1.gif

MATLAB离散信号与系统的时域分析

当初学信号与系统,天书睡过去啊,一到考试心中mmp。理论的枯燥,有了MATLAB就生动形象啦。

本节旨在掌握:

1.学会用MATLAB表示常用离散信号的方法;

2.学会用MATLAB实现离散信号卷积的方法;

0752f95485a1b569e87523a7a873b8bb.gif

3. 学会用MATLAB求解离散系统的单位响应;

4. 学会用MATLAB求解离散系统的零状态响应;

cd4501bf329819d307b4e94e695f900d.gif a22b6cf86e6032aa0958f95344ee8f53.png 24180ea5a339bbcd1c7e85e3f331ca76.png

离散信号的MATLAB表示

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

01

正弦序列信号  正弦序列信号可直接调用MATLAB函数cos,例

766e94fdd0094bcfecfd1bdb2b24b195.png

d9dfa7a9c8104fbac68d1b79d17c7e32.png

是整数或分数时,才是周期信号。

958110f18e3ad9cbba161e4dec2b8625.png

k=0:40;

subplot(2,1,1)

stem(k,cos(k*pi/8),'filled')

title('cos(k*pi/8)')

subplot(2,1,2)

stem(k,cos(2*k),'filled')

title('cos(2*k)')

140d05db4fbfd5a2dd4a9f22450f318e.png

3c06bfe71ccb4d62fe8bbe0f51fc6119.gif

02

单位序列信号

d3f0c1115e8f84b4e9cd076b471e3658.png

本题先建立一个画单位序列

5de0d7e2ec13bf61c346fcc994a9300c.png

的M函数文件,画图时调用。

M文件建立方法:file / new / m-file 在文件编辑窗输入程序,保存文件名用函数名。

function dwxulie(k1,k2,k0)  

% k1 , k2 是画图时间范围,k0是脉冲位置

k=k1:k2;

n=length(k);

f=zeros(1,n);

f(1,-k0-k1+1)=1;                         

stem(k,f,'filled')

axis([k1,k2,0,1.5])

title('单位序列δ(k)')

保存文件名dwxulie.m

画图时在命令窗口调用,例:dwxulie(-5,5,0)

5fdeb69807f409cd35b06f003e5e0e8c.png

cfef4d84e2e9d23211ecfa6f107dc896.png

03

单位阶跃序列信号

a258b9ae925574715ef41fb2742d695d.png

本题也可先建立一个画单位阶跃序列

4141032b344e449b2819f5b07d8544e6.png

的M函数文件,画图时调用。

function jyxulie(k1,k2,k0)

k=k1:-k0-1;

kk=-k0:k2;

n=length(k);

nn=length(kk)

u=zeros(1,n);

uu=ones(1,nn);                                   

stem(kk,uu,'filled')

hold on

stem(k,u,'filled')

hold off

title('单位阶跃序列')

axis([k1 k2 0 1.5])

保存文件名jyxulie.m

画图时在命令窗口调用,例:jyxulie(-3,8,0)

22adadddeecf80e4ce7655e0439fa069.png

41c42c12bed6fa7548f4938a1889c1c1.png

04

实指数序列信号

2965fae01e31dfa0aea5e588b93a0c31.png

c、 a是实数。

建立一个画实指数序列的M函数文件,画图时调用。

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

调用该函数画信号:

ee45dc4833d506503e0220c99a56e2b6.png

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

f5beb37d1365167a5468068df1d08631.png

dszsu(1,-3/4,0,40)

9b8a568c9c74cc2020dc6ad8decf0f1c.png

b1b13eb9ab29b11bf326d39f03c64769.gif

离散信号的卷积和

两个有限长序列f1,f2卷积可调用MATLAB函数conv,调用格式是f=conv(f1,f2),  f是卷积结果,但不显示时间序号,可自编一个函数dconv给出f和k,并画图。

01

function [f,k]=dconv(f1,f2,k1,k2)  

%The function of compute  f=f1*f2

% 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倍

02

求卷积和,

c843ce95370914997d5f35900b28588e.png

 f1=[1 2 1];

k1=[-1 0 1];

f2=ones(1,5);

k2=-2:2;

[f, k]=dconv(f1,f2,k1,k2)

   由运行结果知,f的长度等于f1和f2长度之和减一, f的起点是f1和f2的起点之和,f的终点是f1和f2的终点之和。

c5e406142539231ec950062a0bcd1aaf.png

03

 离散系统的单位响应

MATLAB提供画系统单位响应函数impz,调用格式是

impz(b,a) 式中b和a是表示离散系统的行向量;

impz(b,a,n) 式中b和a是表示离散系统的行向量,时间范围是0~n;

impz(b,a,n1,n2) 时间范围是n1~n2 ;y=impz(b,a,n1,n2) 由y给出数值序列;

45dd3f003a77be80991a35e3f9f966c8.png

a=[1,-1,0.9];

b=[1];

impz(b,a)

impz(b,a,60)

impz(b,a,-10:40)

4e3dd14b507a0da45d8fdb536298eb3d.png

04

离散系统的零状态响应

MATLAB提供求离散系统零状态响应数值解函数filter,调用格式为filter(b,a,x),式中b和a是表示离散系统的向量,x是输入序列非零样值点行向量,输出向量序号同x一样。

0ee4d1ad87f604e6241cd9d0138f5303.png

求零状态响应, 范围0~20。

a=[1 -0.25 0.5];

b=[1 1];

t=0:20;

x=(1/2).^t;

y=filter(b,a,x)

subplot(2,1,1)

stem(t,x)

title('输入序列')

subplot(2,1,2)

stem(t,y)

title('响应序列')

3a6ff33ee59162f00c28f0f046a94875.png

1247004e7d52be63a163b8ed7e65c1db.gif

MATLAB各种版本,关注公众号回复相应版本即可。

未完待续

扫码关注

不迷路

985968f702d0f154da942cc69e420b82.gif

最后

以上就是喜悦短靴为你收集整理的matlab系统响应函数_MATLAB信号与系统——离散信号与系统的时域分析的全部内容,希望文章能够帮你解决matlab系统响应函数_MATLAB信号与系统——离散信号与系统的时域分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部