借用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;沒執行完,程式就往下走了,不知如何改進,求助!!!!