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

2 Ansichten (letzte 30 Tage)
ninjin
ninjin am 18 Okt. 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];
}

Antworten (0)

Kategorien

Mehr zu コード生成 finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!