does anyone knows how to write vector components inside matlab function?

17 ビュー (過去 30 日間)
Alexandre Masson Vicente
Alexandre Masson Vicente 2016 年 1 月 20 日
編集済み: per isakson 2016 年 1 月 21 日
I tried to create a simulink block with embedded code through "matlab function":
function xdot = fcn(m,J,u,x)
%#codegen
R = [cos(x(8))*cos(x(9)) cos(x(8))*sin(x(9)) -sin(x(8));
-cos(x(7))*sin(x(9))+sin(x(7))*sin(x(8))*cos(x(9)) cos(x(7))*cos(x(9))+sin(x(7))*sin(x(8))*sin(x(9)) sin(x(7))*cos(x(8));
sin(x(7))*sin(x(9))+cos(x(7))*sin(x(8))*cos(x(9)) -sin(x(7))*cos(x(9))+cos(x(7))*sin(x(8))*sin(x(9)) cos(x(7))*cos(x(8))];
%
M = [1 sin(x(7))*tan(x(8)) cos(x(7))*tan(x(8));
0 cos(x(7)) -sin(x(7)) ;
0 sin(x(7))*sec(x(8)) cos(x(7))*sec(x(8))];
%
Wskew = [ 0 -x(12) x(11);
x(12) 0 -x(10);
-x(11) x(10) 0 ];
%
Vb = [x(4);
x(5);
x(6)];
%
W = [x(10);
x(11);
x(12)];
%
xdot=[R*Vb;
F-Wskew*Vb;
M*W;
J\(N-Wskew*J*W];
But matlab does not interpret the entries of vector "x" to form the matrices "W", "Vb", "R" and "Wskew".
DOES ANYONE HAVE ANY IDEA THAT I CAN TRY ON THIS PROBLEM?
Thanks.
  3 件のコメント
Walter Roberson
Walter Roberson 2016 年 1 月 21 日
Does simulink consider x to be a vector or a 2D array?
Alexandre Masson Vicente
Alexandre Masson Vicente 2016 年 1 月 21 日
編集済み: per isakson 2016 年 1 月 21 日
Sorry, guys. I wrote the code with some errors. The program worked!
function xdot = fcn(m,J,u,x)
%#codegen
% atitude da aeronave na sequência 321 (projeta as medidas do INERCIAL no CORPO)
R = [cos(x(8))*cos(x(9)) cos(x(8))*sin(x(9)) -sin(x(8));
-cos(x(7))*sin(x(9))+sin(x(7))*sin(x(8))*cos(x(9)) cos(x(7))*cos(x(9))+sin(x(7))*sin(x(8))*sin(x(9)) sin(x(7))*cos(x(8));
sin(x(7))*sin(x(9))+cos(x(7))*sin(x(8))*cos(x(9)) -sin(x(7))*cos(x(9))+cos(x(7))*sin(x(8))*sin(x(9)) cos(x(7))*cos(x(8))];
%
% transformação das velocidades angulares nas taxas dos ângulos de euler
M = [1 sin(x(7))*tan(x(8)) cos(x(7))*tan(x(8));
0 cos(x(7)) -sin(x(7)) ;
0 sin(x(7))*sec(x(8)) cos(x(7))*sec(x(8))];
%
% matriz anti-simétrica de velocidades angulares (componentes no CORPO)
Wskew = [ 0 -x(12) x(11);
x(12) 0 -x(10);
-x(11) x(10) 0 ];
%
% vetor velocidade do centro de massa da aeronave escrito no CORPO
Vb = [x(4);
x(5);
x(6)];
%
% vetor velocidade angular da aeronave escrito no CORPO
W = [x(10);
x(11);
x(12)];
%
% vetor soma das forças externas aplicadas ao veículo
F = [u(1);
u(2);
u(3)]
%
% vetor soma dos torques externos em torno do baricentro da aeronave
N = [u(4);
u(5);
u(6)];
%
% Dinâmica do Corpo Rígido descrita em ESPAÇO DE ESTADOS, xdot = f(x,u,t)
xdot=[R*Vb; % velocidade escrita no INERCIAL
F-Wskew*Vb; % aceleração escrita no CORPO
M*W; % rapidez com que variam os ângulos de euler
J\(N-Wskew*J*W)]; % aceleração angular escrita no CORPO

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink Functions についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by