@@ -1517,18 +1517,22 @@ function predict_mhe!(
15171517 i_d0arr = estim. direct ? 0 : nd # the first nd elements in D0 are useless if p=1
15181518 x̂0 = @views x̂0arr[1 : nx̂]
15191519 for j= 1 : Nk
1520- u0 = @views estim. U0[(1 + nu* (j- 1 )): (nu* j)]
1521- d0 = @views estim. D0[(1 + nd* (j- 1 ) + i_d0arr): (nd* j + i_d0arr)]
1522- ŵ = @views Ŵ[(1 + nŵ* (j- 1 )): (nŵ* j)]
1523- k̄ = @views K̄[(1 + nk̄* (j- 1 )): (nk̄* j)]
1524- û0 = @views Û0[(1 + nu* (j- 1 )): (nu* j)]
1525- ûi = @views Ûi[(1 + nu* (j- 1 )): (nu* j)]
1526- di = @views Di[(1 + nd* (j- 1 )): (nd* j)]
1527- x̂0next = @views X̂0[(1 + nx̂* (j- 1 )): (nx̂* j)]
1528- d0next = @views (j < Nk) ? estim. D0[(1 + nd* j + i_d0arr): (nd* (j+ 1 ) + i_d0arr)] : d0
1520+ u0 = @views estim. U0[(1 + nu* (j- 1 )): (nu* j)]
1521+ d0 = @views estim. D0[(1 + nd* (j- 1 ) + i_d0arr): (nd* j + i_d0arr)]
1522+ ŵ = @views Ŵ[(1 + nŵ* (j- 1 )): (nŵ* j)]
1523+ k̄ = @views K̄[(1 + nk̄* (j- 1 )): (nk̄* j)]
1524+ û0 = @views Û0[(1 + nu* (j- 1 )): (nu* j)]
1525+ ûi = @views Ûi[(1 + nu* (j- 1 )): (nu* j)]
1526+ di = @views Di[(1 + nd* (j- 1 )): (nd* j)]
1527+ x̂0next = @views X̂0[(1 + nx̂* (j- 1 )): (nx̂* j)]
1528+ if estim. direct || j < Nk # d0(k+1) is never needed if estim.direct
1529+ d0next = @views estim. D0[(1 + nd* j + i_d0arr): (nd* (j+ 1 ) + i_d0arr)]
1530+ else # special case, d0(k+1)≈d0(k), since d0(k+1) is not available at time k:
1531+ d0next = d0
1532+ end
15291533 if h > 0 && j < Nk
1530- u0next = estim. U0[(1 + nu* j): (nu* (j+ 1 ))]
1531- else
1534+ u0next = @views estim. U0[(1 + nu* j): (nu* (j+ 1 ))]
1535+ else # special case, û0(k+p)≈û0(k+p-1), since û0(k+p) is not available at time k:
15321536 u0next = u0
15331537 end
15341538 û0next = @views j < Nk ? Û0[(1 + nu* j): (nu* (j+ 1 ))] : Û0[1 : nu]
0 commit comments