【问题标题】:Evaluating a transfer function from .Net从 .Net 评估传递函数
【发布时间】:2013-10-16 15:11:07
【问题描述】:

我正在尝试使用 Matlab 来评估使用我在 .net 应用程序中生成的数据的连续传递函数。 我用以下代码创建了一个 M 文件:

function out = transfer(in)
     s = tf('s')
     H = s^2/(s^2+5*s+6.25)
end

输入参数应该是什么,如何与传递函数H一起使用?

一旦我知道了这一点,我猜我可以使用各种方法从 .net 中获取 matlab 函数;一旦我的功能正确,这应该不会太糟糕。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您还必须将H 定义为传递函数:

    H = tf( [ 1 0 0 ] , [ 1 5 6.25] );
    

    您需要定义s = tf('s'),如果您想将其用于进一步计算。

    然后您可以计算您的数据t(时间)和u(值)的系统响应

    t = 0:0.01:4;
    u = sin(10*t);
    response = lsim(H,u,t)
    

    如果您的数据没有固定的时间步长,您可以先创建一个timeseries object。并使用sim 而不是lsim

    【讨论】:

    • 我每 0.1 秒输入一个十进制数(加速度)。我可以把它们变成我真正希望的任何格式。 lsim 只是为了测试,还是为了实际使用?
    • 当然是为了实际使用。我添加了response - 这个向量包含每个时间步的输出/响应数据。因此,使用您的步长创建一个像上面这样的时间向量,注意所有向量具有相同的长度(时间和输入数据)并且它将起作用。
    • 我做了一些进一步的研究,似乎 lsim 用于评估固定时间段。如何在连续的时间段内使用 tf。 IE。每 0.1 秒我收到一个新数据点,我如何评估函数到当前时间?
    • 查看答案。或者提供一些数据,我也可以试试。
    • 所以看起来我可以在每个时间步执行 addsample,并针对 simulink 模型进行模拟?但是当我尝试时,我得到“TIMESPAN”参数必须是一个真正的标量或向量。数据实际上是每 0.1 秒的双精度值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多