天天看點

matlab中.m函數中simulink,m函數中調用simulink賦初值的問題

借用Matlab中自帶的missile模型,aero_guidance.mdl,打算建立脫靶量對目标初始速度v_tgt,和射擊初始位置pos_tgt的元模型,編寫程式如下:

function Missd=MissDCal(Htg, Vtg, Xtg)

aero_guid_dat;  % 将simulink 模型中賦初值的PreloadFcn回調函數放到這裡

%==================================================================

% Define Target

%==================================================================

pos_tgt   = [4500+Xtg -h_ini-Htg];      % Initial Target position [m]

v_tgt     = Vtg;                                     % Target Velocity [m/s]

%==================================================================

% Carry out simulation

%==================================================================

sim('Guidance.mdl')

Missd=Md(end)

clear工作區後運作,錯誤資訊如下

Error using MissDCal (line 18)

Error due to multiple causes.

Caused by:

Error using MissDCal (line 18)

Error evaluating parameter 'v_ini' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'v_ini'.

Error using MissDCal (line 18)

Error evaluating parameter 'theta_ini' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'theta_ini'.

Error using MissDCal (line 18)

Error evaluating parameter 'alpha_ini' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'alpha_ini'.

Error using MissDCal (line 18)

Error evaluating parameter 'q_ini' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'q_ini'.

Error using MissDCal (line 18)

Error evaluating parameter 'pos_ini' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'x_ini'.

Error using MissDCal (line 18)

Error evaluating parameter 'mass' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'mass'.

Error using MissDCal (line 18)

Error evaluating parameter 'Iyy' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'Iyy'.

Error using MissDCal (line 18)

Error evaluating parameter 'g' in 'Guidance/Airframe &

Autopilot/Aerodynamics & Equations of Motion/ Equations of Motion (Body

Axes)'

Error using MissDCal (line 18)

Undefined function or variable 'g'.

Error using MissDCal (line 18)

Error evaluating parameter 'UpperLimit' in 'Guidance/Guidance/Limit

Normal Acceleration Demand '

Error using MissDCal (line 18)

Undefined function or variable 'max_acc'.

Error using MissDCal (line 18)

Error evaluating parameter 'Gain' in 'Guidance/Seeker//Tracker/Radome

Aberration'

Error using MissDCal (line 18)

Undefined function or variable 'd2r'.

Error using MissDCal (line 18)

Error evaluating parameter 'Value' in 'Guidance/Target

Position/direction'

Error using MissDCal (line 18)

Undefined function or variable 'theta_tgt'.

在sim語句前,設斷點調試可以運作,改為m檔案(非函數情形)運作也正常。

倒是用函數調用的方式 如 Missd=MissDCal(600, 400, 1000),就出錯了,個人感覺好像是賦初值的語句aero_guid_dat;沒執行完,程式就往下走了,不知如何改進,求助!!!!