在非阶跃响应函数上找到超调、欠调、上升时间和下降时间

38次浏览(过去30天)
我知道我可以用阶跃响应图来做
但是假设我有一个连续的时域图,也就是一个数据向量
我想找到拍摄和拍摄不足时的上升和下降时间
有什么内置的函数吗?
2的评论
罗伯特·斯科特
罗伯特·斯科特 2021年8月13日
是的,我可以写求和和减法的代码,但在matlab中也有函数。函数的概念就是生成可重用的代码。这就是编程的本质。

登录评论。

接受的答案

明星黾
明星黾 2021年8月14日
使用 系统识别工具箱 函数如 iddata 而且 党卫军 识别和估计系统。然后,用 stepinfo 在确定的系统上获取你想要的信息。
12个评论
明星黾
明星黾 2021年8月14日
编辑:明星黾 2021年8月15日
我希望你能分享这些数据。
至少这样我就知道问题出在哪里了。
至少方波的可能性已经不存在了。当我意识到“下降时间”可能就是那个时间,而不是我最初假设的“稳定时间”(事实证明是正确的)时,我考虑过这个问题。
比较 函数给出了关于估计系统与数据匹配程度的有用信息?
也许是模拟输入 “u (t)” 如果你知道它是什么,然后把它给 iddata (和 党卫军 )会让事情变得更容易。此外,还可以试验其他参数和名值对参数,以包括延迟和其他选项。
如果你想对系统特征有一个更全面的了解,一种可能是采用 fft 信号的。画出虚部 fft 作为频率的函数,它会告诉你有多少极点和零点,以及它们的大致位置,包括原点和无穷远处。使用单侧 fft 对于这个。的 党卫军 函数允许一系列的顺序进行实验,所以这也是一种选择,不管它是虚构的 fft 图可以让你们自己看一下看看它是否真的是二阶方程组。
我对此表示怀疑 特遣部队 能提供更好的估计吗 党卫军 (因为根据我的经验, 党卫军 是最健壮的选项),但是值得一试。现在我不知道还能提什么建议。
- - -
编辑- (2021年8月15日14:48)
我能建议的唯一其他方法是使用非线性参数估计例程之一将数据拟合到函数中( fminsearch lsqcurvefit nlinfit fitnlm ,或其他)。该函数的推导可以是:
信谊f(t) y(t) t p y0 Dy0 f0
P = sym(“p”[1,2]);
Dy = diff(y);
D2y = diff(Dy);
Eqn = D2y + p(1)*Dy + p(2)*y = f0;
ys = dsolve(Eqn, Dy(0)==Dy0, y(0)==y0);
Ys = simplify(expand(Ys), 500);
yfcn = matlabFunction(ys,“var”, {[p (1), (2), y0, Dy0, f0), t})
yfcn =Function_handle with value:
@ (in1, t) exp (in1(: 1)。* t。*(1.0. / 2.0))。* 1.0. /√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2)。* (in1(:, 4)。* sinh (t。*√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2))/ 2.0)。* 2.0 + in1(:, 3)。* cosh (t。*√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2))/ 2.0)。* sqrt (in1(:, 2)。* -4.0 + in1(: 1)。^ 2)+ in1(: 1)。* in1(:, 3)。* sinh (t。*√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2))/ 2.0))——(in1(:, 5)。* exp (in1(: 1)。* t。*(1.0. / 2.0))。* 1.0. /√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2)。* (cosh (t。*√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2))/ 2.0)。* sqrt (in1(:, 2)。* -4.0 + in1(: 1)。^ 2)exp ((in1(: 1)。* t) / 2.0)。*倍根号(三机一体(:2)。* -4.0 + in1(: 1)。^ 2)+ in1(: 1)。* sinh (t。*√(in1(:, 2)。* -4.0 + in1(: 1)。^ 2))/ 2.0)))。/ in1 (:, 2)
“三机” 对应的参数向量(顺序为): [p (1), (2), y0, Dy0, f0]
一个典型的图(这里模拟了估计的参数)可能是这样的:
数字
fplot(@(t)yfcn([1,1,0,0,1],t), [0 15])
网格
然后从估计的函数中计算出必要的特征。

登录评论。

更多答案(3)

保罗
保罗 2021年8月14日
我不知道你说的“秋季时间”是什么意思,所以也帮不了你。
为什么不是
stepinfo (y, t)
足够吗?数据是不是太吵了?
1评论
保罗
保罗 2021年8月15日
我仍然不确定为什么stepinfo()对您的应用程序没有用处。
根据我对问题的理解,你有一些数据,你希望找到一些数据的优点。我仍然有这样的印象,即数据本质上是一个系统的输出,由一个阶跃输入激发。
为什么我会有这样的印象?因为:
A)性能超调、欠调和上升时间的数字通常用来描述响应于阶跃输入的系统输出。我不熟悉“fall time”这个词,但我快速搜索了一下,发现它本质上与风险时间是一样的
b) 这个答案 (您似乎正在追求的),建议使用函数stepinfo(),该函数用于估计您所寻求的系统响应阶梯式输入的输出的优点数字
c) 这样的评论 你明确地说"想象一个典型的二阶阶跃反应"
基于以上,我假设你有一些看起来像“典型的二阶阶跃响应”的数据。我相信有很好的理由,你不能给我们看数据。我们来创建一些
Sys = tf(1,[1 2*.]7 (1);用于实验的二阶系统
stepinfo(系统)根据该模型得出绩效指标。
ans =带字段的结构:
RiseTime: 2.1268 SettlingTime: 5.9789 SettlingMin: 0.9001 SettlingMax: 1.0460 Overshoot: 4.5986 Undershoot: 0 Peak: 1.0460 PeakTime: 4.4078
[y,t] = step(sys);%生成一些数据
stepinfo (y, t)%基于数据生成相同的优点数字
ans =带字段的结构:
RiseTime: 2.1190 SettlingTime: 6.0895 SettlingMin: 0.9001 SettlingMax: 1.0460 Overshoot: 4.8126 Undershoot: 0 Peak: 1.0460 PeakTime: 4.4078
正如预期的那样,基于数据的FOMs与基于模型的stepinfo计算结果非常接近。
这个例子是否抓住了您要做的事情的本质?
如果没有,如果你发布了一个你试图用一些实际数据完成的例子,你可能会在这里获得更多的关注。如果你不能分享的话,不是真正的数据,而是一些示例数据,它们仍然说明了这个问题。

登录评论。


罗伯特·斯科特
罗伯特·斯科特 2021年8月15日
这个问题一直存在。问题是,我不想要的上升和下降时间的步骤响应。我想要数据本身的上升和下降时间。先做sest,再采取步进响应是不正确的。
我并不是试图建立一个系统模型然后看它的阶跃响应。我想看到的是数据的上升和下降时间,而不是数据的阶跃响应。
这就是不同之处。
想象一下,使用o型瞄准镜,当你执行单个触发器并获得绘图时,你可以在地球上的每个瞄准镜上点击“测量”按钮。你可以选择上升和下降的时间,它会熄灭,并标记出图形的上升和下降时间。
这就是我想做的
1评论
图像分析
图像分析 2021年8月15日
不如这样吧:
“想象一下——看看下面我绘制的数据的截图。”
然后用红线或箭头指出你想测量的x和y距离。

登录评论。


罗伯特·斯科特
罗伯特·斯科特 2021年8月15日
没关系,我已经放弃了。就像matlab中的许多事情一样,在python中应该很简单,只需要5分钟就可以完成的事情,却需要5个小时的挫折。
我已经放弃寻找这些数据了。我试着用poly拟合来做一些更手工的事情,并在上面做一些微积分,但为了正确地近似曲线,我需要去到10阶,这使得通过导数来做这件事毫无用处
既然我已经放弃这个了,你们能帮我解决我发现的这个新问题吗?我很失望,我甚至不得不问这个问题。
1评论
明星黾
明星黾 2021年8月15日
出于好奇,你用Python能做什么MATLAB不能做的事情?
我仍然不确定数据有什么问题。如果有噪声,一种选择可以是Savitzky-Golay滤波器 sgolayfilt 一般工作的功能,在频选滤波器完全失效的宽带噪声中更可取。(选择 3. 对于顺序,再对帧长进行实验,以得到最好的结果。)的 smoothdata 函数可以slso使用它,但是显然需要有信号处理工具箱来使用它 smoothdata

登录评论。

s manbetx 845


释放

R2020b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!