Files
2025-06-04 14:13:22 +08:00

47 lines
1.3 KiB
Matlab

function [Glat, P]= mixer_design
proj = slproject.getCurrentProject;
wd = cd;
cd([proj.RootFolder '/work']);
mdl = evalin('base', 'mdl_name');
fcn = [mdl, '_an'];
opts = trimoptions(fcn);
opts.v0_type = uint8(0);
opts.max_alpha = 12/57.3;
opts.min_alpha = -4/57.3;
opts.max_de = 25/57.3;
opts.min_de = -25/57.3;
opts.max_da = 25/57.3;
opts.min_da = -25/57.3;
opts.max_dr = 25/57.3;
opts.min_dr = -25/57.3;
opts.max_throttle = 1;
opts.throttle = 0.6;
opts.TrimOptions.OptimizationOptions.Display = 'iter';
opts.TrimOptions.DisplayReport = 'on';
load_system(fcn);
mdlWks = get_param(fcn,'ModelWorkspace');
gamma0 = 0;
opts.TrimOptions.OptimizationOptions.Display = 'iter';
opts.TrimOptions.DisplayReport = 'on';
mass = 39;
h0 = 150;
v = 25;
assignin(mdlWks,'mass0',mass);
assignin(mdlWks,'fdm_sel',1);
[success,opts1, op_point] = trimLon( opts, h0, v, gamma0 );
if success
opts = opts1;
alpha = opts.alpha;
[~,Glat] = linfdm(opts.fcn,op_point);
damp(Glat);
B = Glat.B([2 3],:);
Bc = [B(1,1) 0; B(1,1)*tan(alpha) B(2,2)];
P = (B'*B)\B'*Bc;
end
close_system(fcn, 0); % close without saving
cd(wd);
end