EDA365电子论坛网

标题: 向量机拟合电机逆系统的解耦控制模型 [打印本页]

作者: 小小鲁班    时间: 2021-1-28 19:14
标题: 向量机拟合电机逆系统的解耦控制模型
最近本人搭了一个支持向量机拟合电机逆系统的解耦控制模型,下图的逆系统模型用的是simulink中的function模块,里面调用了最小二乘支持向量机工具箱simlssvm,数据都是训练好的,如图
当我把模块单独拿出来的时候,该逆系统正常运行不报错,但是当我加到原系统中时,出现错误:The extrinsic function 'simlssvm' is not available for standalone code generation. It must be eliminated for stand-alone code to be generated. It could not be eliminated because its outputs appear to influence the calling function.  Fix this error by not using 'simlssvm' or by ensuring that its outputs are unused.
) ~; B" w) f) X% J
; b& g4 ^1 u8 s8 B! m( D2 t- Z2 y
function程序如下,XYalpha的数组太长了,我就用[]代替了,个人感觉程序本身是没有问题的,因为单独拿出来能用,跪求各位大神指教!!!!:
* {4 N$ @8 H0 `# e% f6 ]. z% GA_LSSVM输入输出模块4 i4 b8 Z* R( `9 M$ V% G( m
function [imd,imq,ibd,ibq] = GA_LSSVM(omega1,displace_X2,displace_Y2)
9 h; S) N. Z$ ^2 A" H  R3 P8 Y% 读取训练数据及训练结果1 ~& L9 ]& X, P3 m
coder.extrinsic('simlssvm');) I* J( {/ M$ m4 C/ M5 z
imd = zeros(1,1);0 Z$ O4 t& l* z6 t- x8 y  q2 H
imq = zeros(1,1);- R+ f  r0 j( x$ C
ibd = zeros(1,1);) w4 O+ o! G: c' v( U: {" @
ibq = zeros(1,1);9 G8 X3 D' I9 g* z3 Q
alpha1 = [];8 z# I1 o, Y4 i" ^+ T; e8 s& r; E
alpha2 = [];
7 f& ]( U1 D# F: B0 P% @  p$ walpha3 = [];
3 R5 N* H4 ^: g$ l! H) }7 t3 \alpha4 = [];
  ?3 f. V3 ~/ b, J( `3 bb1 = [0.749494965147066];9 G: a' E3 X% N. z
b2 = [0.571922877647378];' |2 n/ t# a7 G8 u) x8 e5 c/ e+ x
b3 = [-0.0970456665481540];5 S6 g# ~% R" D( R7 u
b4 = [0.782216210156907];
5 ^1 y9 ~' ^& G. T" E+ F$ bgam1 = [468.750000000000];
% r+ r% ^5 z5 Dgam2 = [468.750000000000];
: @4 @! Q% q" {# e) b3 X) Ggam3 = [468.750000000000];
/ g* N- d2 Z& ?( bgam4 = [468.750000000000];1 ~7 I5 w3 s  t$ }
sig21 = [0.0625000000000000];
  e8 i4 i! b2 O+ {9 |" msig22 = [0.0312500000000000];. y7 t; U: n5 m! s
sig23 = [0.625000000000000];$ @4 V) B& y: I8 V; i7 U5 v5 q
sig24 = [0.625000000000000];. |' z9 i+ c! F9 k
X = [];
4 l, Q  t  }% R/ GY1 = [];
9 V% N* N* o7 {6 o1 W+ J* k3 ^Y2 = [];
1 [( d% u3 B  t/ D  b9 ~Y3 = [];
# A6 c9 v, }: B7 r9 W! `8 H' B6 I% `Y4 = [];
5 D" j& e$ }9 d+ w% 输入初始化
, G# t8 ?4 I! p! H1 z9 atype = 'function estimation';
5 |# u, [( m7 `4 A" tXnew = [omega1 displace_X2 displace_Y2];& a1 P+ r" b- z- g5 I. e% d
% 输出初始化+ I# V. P+ L( f" e( J# e
% 读取输入规模
7 D7 j7 ?" _+ `2 i9 {% N7 i& C3 limd = simlssvm({X,Y1,type,gam1,sig21,'RBF_kernel','preprocess'},{alpha1,b1},Xnew);' s- J( g8 |2 m8 s8 S7 a
imq = simlssvm({X,Y2,type,gam2,sig22,'RBF_kernel','preprocess'},{alpha2,b2},Xnew);
+ O" U3 W& q4 iibd = simlssvm({X,Y3,type,gam3,sig23,'RBF_kernel','preprocess'},{alpha3,b3},Xnew);0 w; `  U- q9 x- V& }
ibq = simlssvm({X,Y4,type,gam4,sig24,'RBF_kernel','preprocess'},{alpha4,b4},Xnew);/ f, y2 L; `- d5 {
, w7 h; T3 q2 L) b  T) _% k

作者: zaiyiaaaa    时间: 2021-1-28 19:55
帮你顶一下
作者: kekek    时间: 2021-1-29 10:38
matlab function模块默认是需要生成代码的,所以一般是不能调用工具箱函数,如果需要调用需要使用下面的语句声明不生成代码。* J* B% I5 b( A7 K4 Q
coder.extrinsic('funname') ; % funname为外部工具箱函数的名称
作者: nkkopd    时间: 2021-1-29 11:29
来学习一下




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2