|
120 | 120 |
|
121 | 121 | linmodel2 = LinModel(sys,Ts,i_d=[3]) |
122 | 122 | f2(x,u,d) = linmodel2.A*x + linmodel2.Bu*u + linmodel2.Bd*d |
123 | | - h2(x,_) = linmodel2.C*x |
| 123 | + h2(x,d) = linmodel2.C*x + linmodel2.Dd*d |
124 | 124 | nonlinmodel2 = NonLinModel(f2,h2,Ts,2,4,2,1) |
125 | 125 |
|
126 | 126 | @test nonlinmodel2.nx == 4 |
|
133 | 133 | nonlinmodel2.h!(y,[0,0,0,0],[0]) |
134 | 134 | @test y ≈ zeros(2,) |
135 | 135 |
|
136 | | - nonlinemodel3 = NonLinModel{Float32}(f2,h2,Ts,2,4,2,1) |
137 | | - @test isa(nonlinemodel3, NonLinModel{Float32}) |
| 136 | + nonlinmodel3 = NonLinModel{Float32}(f2,h2,Ts,2,4,2,1) |
| 137 | + @test isa(nonlinmodel3, NonLinModel{Float32}) |
| 138 | + |
| 139 | + function f1!(xnext, x, u, d) |
| 140 | + xnext .= 0 |
| 141 | + mul!(xnext, linmodel2.A, x, 1, 1) |
| 142 | + mul!(xnext, linmodel2.Bu, u, 1, 1) |
| 143 | + mul!(xnext, linmodel2.Bd, d, 1, 1) |
| 144 | + return nothing |
| 145 | + end |
| 146 | + function h1!(y, x, d) |
| 147 | + y .= 0 |
| 148 | + mul!(y, linmodel2.C, x, 1, 1) |
| 149 | + mul!(y, linmodel2.Dd, d, 1, 1) |
| 150 | + return nothing |
| 151 | + end |
| 152 | + nonlinmodel4 = NonLinModel(f1!, h1!, Ts, 2, 4, 2, 1) |
| 153 | + xnext, y = similar(nonlinmodel4.x), similar(nonlinmodel4.yop) |
| 154 | + nonlinmodel4.f!(xnext,[0,0,0,0],[0,0],[0]) |
| 155 | + @test xnext ≈ zeros(4,) |
| 156 | + nonlinmodel4.h!(y,[0,0,0,0],[0]) |
| 157 | + @test y ≈ zeros(2,) |
138 | 158 |
|
139 | 159 | @test_throws ErrorException NonLinModel( |
140 | 160 | (x,u)->linmodel1.A*x + linmodel1.Bu*u, |
|
0 commit comments