作业帮 > 综合 > 作业

MATLAB 中 y=sum(ilaplace(r./(s*(s-p))));的意思

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 07:45:10
MATLAB 中 y=sum(ilaplace(r./(s*(s-p))));的意思
我想写一个50000/(s^3+1020s^2+20000s+50000)这个函数的单位阶跃响应曲线,这个程序对不,
•>>num=[50000];•
den=[1 1020 20000 50000];•
•[r,p,k ]=residue(num.den);•
syms s
•y=sum(ilaplace(r./(s*(s-p))));
ezplot(y,[0.50]);
•axis([0 50 0 50]);
•ylable(‘y(t)’);
代码说明
这句代码:
y=sum(ilaplace(r./(s*(s-p))));
的意思是,对输出量的复数域表达式通过部分分式展开的方法进行拉氏反变换,其中分母里除了s-p之外还有个s,对应于阶跃函数的拉氏变换(1/s).
 
存在问题
程序大致上正确,但存在一些小问题:
1、下面这句
[r,p,k ]=residue(num.den);
其中“num.den”的小数点应为逗号.
2、下面这句
ezplot(y,[0.50]);
其中的[0.50]应为[0 50].
3、坐标范围设置欠妥.时间轴取2-3秒足够,纵坐标取0-1就可以了.
4、最后一句ylable应为ylabel,另外,单引号应为半角,但被误写为全角字符.
 
修改建议
可参考以下代码:
num=[50000];
den=[1 1020 20000 50000];
[r,p,k ]=residue(num,den);
syms s
y=sum(ilaplace(r./(s*(s-p))));
ezplot(y,[0 3]);
axis auto
ylabel('y(t)');
title('')
顺便说一句,如果只是想求阶跃响应,直接用下面一句就够了:
step(num,den)
 
绘图结果