声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3043|回复: 4

[编程技巧] 一阶纯滞后系统的阶跃信号曲线

[复制链接]
发表于 2009-6-1 13:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
控制系统中,一阶纯滞后系统的阶跃信号曲线可以模拟为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=[j];        
den=[x3 1];
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 编辑 ]

tet.txt

4.12 KB, 下载次数: 9

回复
分享到:

使用道具 举报

发表于 2009-6-1 22:11 | 显示全部楼层
从这一行出错! k=subs(dy1, 't', n);
k应该是一个值, 但不是! 为一200*1

还有matlab好处在其直译式编辑, 建议初学者一行一行试! 不要全部写完再试!
并检查每句结果是否为LZ要的! 至少个人还是经常如此!
 楼主| 发表于 2009-6-4 15:40 | 显示全部楼层
谢谢ChaChing;
这个程序的问题k=subs(dy1, 't', n);   应该改为k=dy1(n);
  之前不知道有个直译式编辑,毕竟才学使用MATLAB,现在已经比较清楚了。
  再此在一次谢谢ChaChing。
  还有就是这样生成系统传递函数需要注意的是,inputdelay,就是滞后时间,要求为正,这个程序总的来说还有这样一个问题,在实际使用是需要做一些修改。
发表于 2009-6-4 16:50 | 显示全部楼层

回复 板凳 dn62038607 的帖子

建议与大家分享你的成果, 给齐程序, 做个结束!
发表于 2010-9-15 18:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-11 09:43 , Processed in 0.068105 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表