code: def update_steadystate(x, z, K, H=None):
      
  
  
      if z is None:
          return x
  
      if H is None:
          H = np.array([1])
  
      if np.isscalar(H):
          H = np.array([H])
  
      Hx = np.atleast_1d(dot(H, x))
      z = reshape_z(z, Hx.shape[0], x.ndim)
  
      # error (residual) between measurement and prediction
      y = z - Hx
  
      # estimate new x with residual scaled by the kalman gain
      return x + dot(K, y)
docs: Add a new measurement (z) to the Kalman filter. If z is None, nothing
      is changed.
  
  
      Parameters
      ----------
  
      x : numpy.array(dim_x, 1), or float
          State estimate vector
  
  
      z : (dim_z, 1): array_like
          measurement for this update. z can be a scalar if dim_z is 1,
          otherwise it must be convertible to a column vector.
  
      K : numpy.array, or float
          Kalman gain matrix
  
      H : numpy.array(dim_x, dim_x), or float, optional
          Measurement function. If not provided, a value of 1 is assumed.
  
      Returns
      -------
  
      x : numpy.array
          Posterior state estimate vector
  
      Examples
      --------
  
      This can handle either the multidimensional or unidimensional case. If
      all parameters are floats instead of arrays the filter will still work,
      and return floats for x, P as the result.
  
      >>> update_steadystate(1, 2, 1)  # univariate
      >>> update_steadystate(x, P, z, H)