如何利用控件modu将Matlab状态空间转换为Python

2024-06-09 05:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在分析一个LTI系统,我想在Matlab和Python中交叉检查结果。但是,我无法使Control.InputOutput系统正常工作

我尝试过使用import control.iosysfrom control import InputOutputSystem as ios等等,但总是出现导入错误。 我想要实现的是下面的代码,但是在Python中结合了控制模块

bypass = ss(eye(2),...
    'InputName',{'coll' 'long'},...
    'OutputName',{'coll' 'cycl_l'});

bypass_connect = parallel(ss_scas, bypass, 'name');
oloop = series(bypass_connect, model.ss, 'name');

% oloop = series(ss_scas, model.ss);
outputnames = {'u' 'w' 'tht' 'q' 'fx' 'fz' 'qdot'};
oloop.OutputName = outputnames;

FeedbackChannels = {'tht' 'q'};
K = ss(eye(2),'InputName',FeedbackChannels,...
              'OutputName',FeedbackChannels);
cloop = feedback(oloop,K,'name',+1);

model = struct();
model.ss = cloop;
model.ss_red = minreal(cloop);

我的目的是:

import numpy as np
from control import matlab as ml
from *** import model
from afcs import ss_scas

## Combination with bare linear model
ZZ = np.zeros((2,2))
bypass = ml.ss(ZZ, ZZ, ZZ, np.eye(2))
bypass.InputName = ('coll', 'long')
bypass.OutputName = ('coll', 'cycl_l')

bypass_connect = ml.parallel(ss_scas, bypass, 'name')
oloop = ml.series(bypass_connect, model.ss, 'name')

# oloop = series(ss_scas, model.ss)
outputnames = ('u', 'w','tht' ,'q', 'fx', 'fz' ,'qdot')
oloop.OutputName = outputnames

任何提示都会有帮助


Tags: namefromimportmodelconnectmlssseries