一阶纯滞后系统的阶跃信号曲线
控制系统中,一阶纯滞后系统的阶跃信号曲线可以模拟为S型。我这里有一组TXT数据,同时需要做简单的数据处理。附件里面是数据,这里附程序和出现的错误。tet=load('tet.txt');
t=tet(:,1);
yor=tet(:,2);
dy2=diff(diff(yor)); %b的二阶差分
m=min(abs(dy2));
n=find(abs(dy2)==m); %找到二阶差分绝对值最小的,就是最接近0的点
x=t(n); %?拐点横坐标
y=yor(n); %?拐点纵坐标
disp(['(',num2str(x),' , ',num2str(y),')']);
j=max(yor); %?极限
dy1=diff(yor); %一阶导
k=subs(dy1, 't', n); %拐点处的一阶导值,对应的拐点处切线斜率
b=y-k*x;%拐点处切线的截距
x1=-k/b; %用简单的数学模型的做法算出切线与X轴的交点横坐标,即纯滞后时间
x2=(j-b)/k; %切线与输出稳态点的横坐标。
x3=x2-x1; %?时间常数
num=;
den=;
sys=tf(num,den,'inputdelay',x1) %带入系数并显示传递函数
运行后的错误
(9.9 , 1.9003)
??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
same number of rows.
响应曲线本就是一组数据,这样的数据组成的曲线的拐点已经找到(9.9 , 1.9003),但是后面一段没结果了。
我现在是感觉在提取TXT数据的时候是不是有什么问题,是否是需要转值再进行处理
[ 本帖最后由 ChaChing 于 2009-6-1 21:57 编辑 ] 从这一行出错! k=subs(dy1, 't', n);
k应该是一个值, 但不是! 为一200*1
还有matlab好处在其直译式编辑, 建议初学者一行一行试! 不要全部写完再试!
并检查每句结果是否为LZ要的! 至少个人还是经常如此! 谢谢ChaChing;
这个程序的问题k=subs(dy1, 't', n); 应该改为k=dy1(n);
之前不知道有个直译式编辑,毕竟才学使用MATLAB,现在已经比较清楚了。
再此在一次谢谢ChaChing。
还有就是这样生成系统传递函数需要注意的是,inputdelay,就是滞后时间,要求为正,这个程序总的来说还有这样一个问题,在实际使用是需要做一些修改。
回复 板凳 dn62038607 的帖子
建议与大家分享你的成果, 给齐程序, 做个结束! {:{40}:}{:{33}:}{:{33}:}{:{33}:}
页:
[1]