2入出力系のモデル予測制御について

2 vues (au cours des 30 derniers jours)
ninjin
ninjin le 18 Oct 2024
現在、2入出力系のモデル予測制御のプログラムを作成しているのですが行き詰っている箇所があるので質問させていただきます。
上のコードが3ステップ先予測の2入出力を想定して、cvxgenで生成した最適化計算を行う際のs-functionブロック内の該当箇所で、下が1入出力系です。
1入出力系のものは問題なく動くのですが、2入出力にするとビルドはできるものの「Access Violation」エラーが発生しクラッシュしてしまいます。コードを確かめたところ該当箇所の配列でエラーが起きているのではないかと考えているため質問させていただきました。
パラメータの次元は以下の通りです。
s 3×2 / sa1 3×1 / sa2 3×1
x 2×1 / xa1 1×1 / xa2 1×1
y 2×1 / ya1 1×1 / ya2 1×1
A 2×2 / B 2×2 / C 2×2
よろしくお願いします。
// MIMO
//Define reference trajectory
for(i=1; i<Hp+1; ++i){
params.s[i][0]= sa1[i-1];
params.s[i][1]= sa2[i-1];
}
for(i=0;i<n;++i){
params.x[0][i] = xa1[i];
params.x[1][i] = xa2[i]; // 追加するとクラッシュ
}
for(i=0;i<n;++i){
params.y[0][i] = ya1[i];
params.y[1][i] = ya2[i]; // 追加するとクラッシュ
}
for(i=0;i<n*n;++i){
params.A[i] = A[i];
}
for(i=0;i<n;++i){
params.B[i] = B[i];
}
for(i=0;i<n;++i){
params.C[i] = C[i];
}
----------------------------------------------------------------------------
//SISO
// Define reference trajectory
for(i=1;i<Hp+1;++i){
params.r[i][0] = s[i-1];
}
for(i=0;i<n;++i){
params.x[0][i] = x0[i];
}
for(i=0;i<n;++i){
params.y[0][i] = y0[i];
}
for(i=0;i<n*n;++i){
params.A[i] = A[i];
}
for(i=0;i<n;++i){
params.B[i] = B[i];
}
for(i=0;i<n;++i){
params.C[i] = C[i];
}

Réponses (0)

Catégories

En savoir plus sur コード生成 dans Help Center et File Exchange

Produits


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!