0
$\begingroup$

Assume that we have a step answer which look like this:

enter image description here

This step answer is from a difference equation. Called a discrete ODE:

$$y[k] + a_1y[k - 1] + a_2y[k - 2] = b_1u[k] $$

Which can be a discrete transfer function.

But I want to find the numerator and denomerator from this difference equation. Know variables are $u[k]$ and $y[k]$. Uknown parameters are $a_1, a_2, b_1$.

This can be formulated as linear matrix equations.

$$\begin{bmatrix} y(k_1)\\ y(k_2)\\ y(k_3)\\ y(k_4)\\ \vdots \\ y(k_n) \end{bmatrix} = \begin{bmatrix} -y(k_1-1) & -y(k_1-2) & u(k_1) \\ -y(k_2-1) & -y(k_2-2) & u(k_2) \\ -y(k_3-1) & -y(k_3-2) & u(k_3) \\ -y(k_4-1) & -y(k_4-2) & u(k_4) \\ \vdots & \vdots & \vdots \\ -y(k_n-1) & -y(k_n-2) & u(k_n) \\ \end{bmatrix}\begin{bmatrix} a_1 \\ a_2 \\ b_1 \end{bmatrix}$$

All $y(0) , y(-1), y(-2), \dots y(-n) = 0$.

Example:

$$\begin{bmatrix} y(1)\\ y(2)\\ y(3)\\ y(4)\\ \vdots \\ y(k_n) \end{bmatrix} = \begin{bmatrix} -0 & -0 & u(1) \\ -y(1) & -0 & u(2) \\ -y(2) & -y(1) & u(3) \\ -y(3) & -y(2) & u(4) \\ \vdots & \vdots & \vdots \\ -y(k_n-1) & -y(k_n-2) & u(k_n) \\ \end{bmatrix}\begin{bmatrix} a_1 \\ a_2 \\ b_1 \end{bmatrix}$$

For higher order system, the linear matrix equation will look like this:

$$\begin{bmatrix} y(k_1)\\ y(k_2)\\ y(k_3)\\ y(k_4)\\ \vdots \\ y(k_n) \end{bmatrix} = \begin{bmatrix} -y(k_1-1) & -y(k_1-2) & \dots & -y(k_1 - np) & u(k_1) & u(k_1 - 1) & u(k_1 - 2) & \dots & u(k_1 - nz)\\ -y(k_2-1) & -y(k_2-2) & \dots & -y(k_1 - np) & u(k_2) & u(k_1 - 1) & u(k_1 - 2) & \dots & u(k_1 - nz)\\ -y(k_3-1) & -y(k_3-2) & \dots & -y(k_1 - np) & u(k_3) & u(k_1 - 1) & u(k_1 - 2) & \dots & u(k_1 - nz)\\ -y(k_4-1) & -y(k_4-2) & \dots & -y(k_1 - np) & u(k_4) & u(k_1 - 1) & u(k_1 - 2) & \dots & u(k_1 - nz)\\ \vdots & \vdots & \vdots & \vdots &\vdots \\ -y(k_n-1) & -y(k_n-2) & \dots & -y(k_n - np) & u(k_n) & u(k_n - 1) & u(k_n - 2) & \dots & u(k_n - nz)\\ \end{bmatrix}\begin{bmatrix} a_1 \\ a_2\\ \vdots \\a_p \\ b_1 \\ b_2 \\ b_3 \\ \vdots \\b_z \end{bmatrix}$$

Where $np$ is number of poles in the denominator and $nz$ is number of zeros in the numerator.

All this linear matrix equations can be expressed as

$b = Ax$

Where $b = y[k]$ and $A = [A1,A2]$ and $x$ is the parameters. $A1$ is all the $-y(k_n-np)$ vectors and $A2$ is all the $u(k_n-nz)$ vectors.

Anyway! I have made an algorithm for this!

Step 1: - Compute the $k_n$ length

kn = length(u);

Step 2: - Compute the $y[k]$ vector

b = y(1:kn)';

Step 3: - Create the $A1$ matrix with the row length $k_n$ and column length $n_p$.

A1 = zeros(kn, np);
for i = 1:kn
  for j = 1:np 

    if i-j <= 0 % -y(0) = -y(-1) = -y(-2) = 0
      A1(i,j) = 0;
    else
      A1(i,j) = -y(i-j); 
    end

  end
end

Step 4: - Do exactly the same with $u[k]$. Create $A2$ matrix.

A2 = zeros(kn, nz);
for i = 1:kn
  for j = 1:nz

    if i-j <= 0 % -u(0) = -u(-1) = -u(-2) = 0
      A2(i,j) = 0;
    else
      A2(i,j) = u(i-j);
    end

  end
end

Step 5: - Create $A$ matrix of $A1$ and $A_2$.

A = [A1 A2]

Step 6: - Solve the parameters using linear solve

x = linsolve(A, b)';

Step 7: - Find the denominator and numerators

den = [1 (x(1, 1:np))] 
num = (x(1, (np+1):end))

Imporant with 1 because it's the scalar of $y[k]$.

Step 8: - Choose the sampling time

Here we choosing the sampling time. The vectors $u[k]$ and $y[k]$ are sampled with 0.1 seconds, but to get this estimation, I have choosed the sampling time 0.05 seconds and the order of zeros is 4 and poles is 5.

So here is the results. You can compare the difference with the picture at the top.

enter image description here

The original continous time transfer function where

$$G(s) = \frac{10}{s^2 + s + 1}$$

Assume that we do impulse response of this transfer function $G(s)$.

enter image description here

Choosing $nz$ = 2 and $np$ = 3 and sampling interval to 0.05 seconds. This is the result:

enter image description here

Let's choose another transfer function:

$$G(s) = \frac{10s + 3}{s^2 + s + 3}$$

A step response with the sampling rate 0.1 seconds.

enter image description here

The estimated by choosing $np = 5$ and $nz = 4$ and sampling rate is 0.05

enter image description here

Now to my question:

Is this right method to estimate a transfer function? All I did was to choose the order of numerator and order of denominator and then choose the sampling interval. The reason I asking this question is because I was sampling at 0.1 seconds, but when I estimate my transfer function, I changed the sampling to 0.05 seconds to get the over shoot. Should I need to have to do this?

I though estimating a transfer function, I only need to choose $np$ and $nz$ and the sampling interval should be determined by the sampling rate I have created $y[k]$ and $u[k]$ with?

If this is correct, I can create $y[k]$ and $u[k]$ with an arbitrary sampling rate?

$\endgroup$
1
$\begingroup$

You basically have it correct. Look up Hankel matrices and realization theory. Remember such methods only work for the LTI case.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.