def METHOD_NAME(self, x, y, u, P, Q=None, R=None, t=None):
    r'''
    Performs one step estimation.
    Args:
        x (:obj:`Tensor`): estimated system state of previous step.
        y (:obj:`Tensor`): system observation at current step (measurement).
        u (:obj:`Tensor`): system input at current step.
        P (:obj:`Tensor`): state estimation covariance of previous step.
        Q (:obj:`Tensor`, optional): covariance of system transition model.
            Default: ``None``.
        R (:obj:`Tensor`, optional): covariance of system observation model.
            Default: ``None``.
        t (:obj:`int`, optional): set system timestamp for estimation.
            If ``None``, current system time is used. Default: ``None``.
    Return:
        list of :obj:`Tensor`: posteriori state and covariance estimation
    '''
    # Upper cases are matrices, lower cases are vectors
    Q = Q if Q is not None else self.Q
    R = R if R is not None else self.R
    self.model.set_refpoint(state=x, input=u, t=t)
    n = x.size(-1)
    xp = self.generate_particles(x, n * P)
    xs, ye = self.model(xp, u)
    q = self.relative_likelihood(y, ye, R)
    xr = self.resample_particles(q, xs)
    x = xr.mean(dim=-2)
    ex = xr - x
    P = self.compute_cov(ex, ex, Q)
    return x, P