| 89 | | xn(:, 1, n) = x0' - [0 0 OMEGAt 0]' + neznalost*sqrtm(P)*randn(4,1); |
| 90 | | for k = 1:K-1, |
| 91 | | tu = L(:, :, k)*(xn(:, k, n)); |
| 92 | | xn(1, k+1, n) = a*xn(1, k, n) + b*xn(3, k, n)*sin(xn(4, k, n)) + c*tu(1) + sum*sqrt(Q(1, 1))*randn(); |
| 93 | | xn(2, k+1, n) = a*xn(2, k, n) - b*xn(3, k, n)*cos(xn(4, k, n)) + c*tu(2) + sum*sqrt(Q(2, 2))*randn(); |
| 94 | | xn(3, k+1, n) = d*xn(3, k, n) + e*(xn(2, k, n)*cos(xn(4, k, n)) - xn(1, k, n)*sin(xn(4, k, n))) + sum*sqrt(Q(3, 3))*randn(); |
| 95 | | xn(4, k+1, n) = xn(4, k, n) + xn(3, k, n)*DELTAt + sum*sqrt(Q(4, 4))*randn(); |
| | 90 | xn(:, 1, n) = x0' + neznalost*sqrtm(P)*randn(4,1); |
| | 91 | for k = 1:Kt-1, |
| | 92 | tu = L(:, :, k)*(xn(:, k, n) - [0 0 OMEGAt 0]'); |
| | 93 | xn(1, k+1, n) = a*xn(1, k, n) + b*xn(3, k, n)*sin(xn(4, k, n)) + c*tu(1) + sumsim*sqrt(Q(1, 1))*randn(); |
| | 94 | xn(2, k+1, n) = a*xn(2, k, n) - b*xn(3, k, n)*cos(xn(4, k, n)) + c*tu(2) + sumsim*sqrt(Q(2, 2))*randn(); |
| | 95 | xn(3, k+1, n) = d*xn(3, k, n) + e*(xn(2, k, n)*cos(xn(4, k, n)) - xn(1, k, n)*sin(xn(4, k, n))) + sumsim*sqrt(Q(3, 3))*randn(); |
| | 96 | xn(4, k+1, n) = xn(4, k, n) + xn(3, k, n)*DELTAt + sumsim*sqrt(Q(4, 4))*randn(); |
| | 97 | % xn(1, k+1, n) = a*xn(1, k, n) + b*(xn(3, k, n)+OMEGAt)*sin(xn(4, k, n)) + c*tu(1) + sum*sqrt(Q(1, 1))*randn(); |
| | 98 | % xn(2, k+1, n) = a*xn(2, k, n) - b*(xn(3, k, n)+OMEGAt)*cos(xn(4, k, n)) + c*tu(2) + sum*sqrt(Q(2, 2))*randn(); |
| | 99 | % xn(3, k+1, n) = -OMEGAt + d*(xn(3, k, n)+OMEGAt) + e*(xn(2, k, n)*cos(xn(4, k, n)) - xn(1, k, n)*sin(xn(4, k, n))) + sum*sqrt(Q(3, 3))*randn(); |
| | 100 | % xn(4, k+1, n) = xn(4, k, n) + (xn(3, k, n)+OMEGAt)*DELTAt + sum*sqrt(Q(4, 4))*randn(); |
| 103 | | S(:, :, K) = X; |
| 104 | | for k = K-1:-1:1, |
| 105 | | A(3, 1) = -e*sin(xs(4, k)); |
| 106 | | A(3, 2) = e*cos(xs(4, k)); |
| 107 | | A(1, 3) = b*sin(xs(4, k)); |
| 108 | | A(2, 3) = -b*cos(xs(4, k)); |
| 109 | | A(1, 4) = b*xs(3, k)*cos(xs(4, k)); |
| 110 | | A(2, 4) = b*xs(3, k)*sin(xs(4, k)); |
| 111 | | A(3, 4) = -e*(xs(2, k)*sin(xs(4, k) + xs(1,k)*cos(xs(4, k)))); |
| 112 | | S(:, :, k) = A'*(S(:, :, k+1) - S(:, :, k+1)*B*inv(B'*S(:, :, k+1)*B + Y)*B'*S(:, :, k+1))*A + X; |
| 113 | | L(:, :, k) = -inv(B'*S(:, :, k+1)*B + Y)*B'*S(:, :, k+1)*A; |
| 114 | | end |
| | 108 | for kt = 1:Kt-1, |
| | 109 | % receding horizon |
| | 110 | if((K-1+kt)<Kt) |
| | 111 | S(:, :, K) = X; |
| | 112 | for k = K-1+kt-1:-1:1+kt-1, |
| | 113 | A(3, 1) = -e*sin(xs(4, k)); |
| | 114 | A(3, 2) = e*cos(xs(4, k)); |
| | 115 | A(1, 3) = b*sin(xs(4, k)); |
| | 116 | A(2, 3) = -b*cos(xs(4, k)); |
| | 117 | A(1, 4) = b*(xs(3, k))*cos(xs(4, k)); |
| | 118 | A(2, 4) = b*(xs(3, k))*sin(xs(4, k)); |
| | 119 | % A(1, 4) = b*(xs(3, k)+OMEGAt)*cos(xs(4, k)); |
| | 120 | % A(2, 4) = b*(xs(3, k)+OMEGAt)*sin(xs(4, k)); |
| | 121 | A(3, 4) = -e*(xs(2, k)*sin(xs(4, k) + xs(1,k)*cos(xs(4, k)))); |
| | 122 | S(:, :, k-kt+1) = A'*(S(:, :, k-kt+2) - S(:, :, k-kt+2)*B*inv(B'*S(:, :, k-kt+2)*B + Y)*B'*S(:, :, k-kt+2))*A + X; |
| | 123 | end |
| | 124 | L(:, :, kt) = -inv(B'*S(:, :, 1)*B + Y)*B'*S(:, :, 1)*A; |
| | 125 | else |
| | 126 | L(:, :, kt) = L(:, :, kt-1); %kopiruje poslednich K kroku z Kt kde to nejde na K predpocitat |
| | 127 | end |
| | 128 | |
| | 129 | end |
| 128 | 143 | xn(1, k+1, n) = a*xn(1, k, n) + b*xn(3, k, n)*sin(xn(4, k, n)) + c*tu(1) + sumsim*sqrt(Q(1, 1))*randn(); |
| 129 | 144 | xn(2, k+1, n) = a*xn(2, k, n) - b*xn(3, k, n)*cos(xn(4, k, n)) + c*tu(2) + sumsim*sqrt(Q(2, 2))*randn(); |
| 130 | 145 | xn(3, k+1, n) = d*xn(3, k, n) + e*(xn(2, k, n)*cos(xn(4, k, n)) - xn(1, k, n)*sin(xn(4, k, n))) + sumsim*sqrt(Q(3, 3))*randn(); |
| 131 | 146 | xn(4, k+1, n) = xn(4, k, n) + xn(3, k, n)*DELTAt + sumsim*sqrt(Q(4, 4))*randn(); |
| | 147 | % xn(1, k+1, n) = a*xn(1, k, n) + b*(xn(3, k, n)+OMEGAt)*sin(xn(4, k, n)) + c*tu(1) + sum*sqrt(Q(1, 1))*randn(); |
| | 148 | % xn(2, k+1, n) = a*xn(2, k, n) - b*(xn(3, k, n)+OMEGAt)*cos(xn(4, k, n)) + c*tu(2) + sum*sqrt(Q(2, 2))*randn(); |
| | 149 | % xn(3, k+1, n) = -OMEGAt + d*(xn(3, k, n)+OMEGAt) + e*(xn(2, k, n)*cos(xn(4, k, n)) - xn(1, k, n)*sin(xn(4, k, n))) + sum*sqrt(Q(3, 3))*randn(); |
| | 150 | % xn(4, k+1, n) = xn(4, k, n) + (xn(3, k, n)+OMEGAt)*DELTAt + sum*sqrt(Q(4, 4))*randn(); |