请教matalab高手

来源:百度知道 编辑:UC知道 时间:2024/06/06 10:55:37
function y = ex5_10(zeta)
%xxx_1二阶系统的阶跃响应
% zeta 阻尼系数、
% y 阶跃响应
t=0:.1:20;
zeta=input('阻尼系数=')
if (zeta>=0) & (zeta<1)
y=p1(zeta,t);
elseif zeta==1
y=p2(zeta,t);
else
y=p3(zeta,t);
end
plot(t,y)
title(['zeta='])
%!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~
function y = p1(z,x)
% p1 hasf afhkjkfjs f kjkjf
% khdaskkajsfkas
y=1-1/sqrt(1-z^2)*exp(-z*x).sin(sqrt(1-z^2)*x+acos(z));
%!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~
function y = p3(z,x)
% p1 h f a hkjkfjs f kjkjf
% khdas kk aj sfkas
aa=sqrt(z.^2-1);
y=1-1/(2.*aa).*(exp(-((x-aa).*x))./(z-aa)-exp(-((z+aa).*x))./(z+aa))
%!!!!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~
function y = p2(z,x)
% p1 hasf afhkjkfjs f kjkjf
% khdaskkajsfkas
y=1-exp(-x).*(1+x)

输入 zeta=[0:.05:1] 运行不起来 不太懂 帮帮忙吧

if (zeta>=0) & (zeta<1)
elseif zeta==1
这句有问题吧.zeta你输入的是一个行向量,一组数,怎么能和一个数比较呢?
我只知道一个很笨的解决办法,就是把那段写成一个循环。你试试。我也不太清楚了,学了好久没有用过了。呵呵

输入0:.05:1 就好了吧。 不需要带 zeta=吧
作为向量 他只是做了一个 声明
从0开始 每个步长是0.05 最大到1,取到这些点作为输入

然后程序根据 每个 zeta当前的值,计算y
最后由y 和 t 画图