Продукт Aerospace Toolbox позволяет принести Военно-воздушным силам США (USAF) Цифровые файлы DATCOM в среду MATLAB® при помощи функции datcomimport
. Для получения дополнительной информации смотрите страницу ссылки на функцию datcomimport
. Этот раздел объясняет, как импортировать данные от ВВС США Цифровой файл DATCOM.
Пример, используемый в следующих темах, доступен как пример Aerospace Toolbox. Можно запустить пример путем ввода astimportddatcom
в Окно Команды MATLAB.
Следующее является демонстрационным входным файлом для ВВС США Цифровой DATCOM для горизонтальной телом крылом вертикальной хвостом настройки хвоста, работающей на основе пяти альф, двух Чисел Маха и двух высот и вычисляющей статические и динамические производные. Можно также просмотреть этот файл путем ввода type astdatcom.in
в Окно Команды MATLAB.
$FLTCON NMACH=2.0,MACH(1)=0.1,0.2$ $FLTCON NALT=2.0,ALT(1)=5000.0,8000.0$ $FLTCON NALPHA=5.,ALSCHD(1)=-2.0,0.0,2.0, ALSCHD(4)=4.0,8.0,LOOP=2.0$ $OPTINS SREF=225.8,CBARR=5.75,BLREF=41.15$ $SYNTHS XCG=7.08,ZCG=0.0,XW=6.1,ZW=-1.4,ALIW=1.1,XH=20.2, ZH=0.4,ALIH=0.0,XV=21.3,ZV=0.0,VERTUP=.TRUE.$ $BODY NX=10.0, X(1)=-4.9,0.0,3.0,6.1,9.1,13.3,20.2,23.5,25.9, R(1)=0.0,1.0,1.75,2.6,2.6,2.6,2.0,1.0,0.0$ $WGPLNF CHRDTP=4.0,SSPNE=18.7,SSPN=20.6,CHRDR=7.2,SAVSI=0.0,CHSTAT=0.25, TWISTA=-1.1,SSPNDD=0.0,DHDADI=3.0,DHDADO=3.0,TYPE=1.0$ NACA-W-6-64A412 $HTPLNF CHRDTP=2.3,SSPNE=5.7,SSPN=6.625,CHRDR=0.25,SAVSI=11.0, CHSTAT=1.0,TWISTA=0.0,TYPE=1.0$ NACA-H-4-0012 $VTPLNF CHRDTP=2.7,SSPNE=5.0,SSPN=5.2,CHRDR=5.3,SAVSI=31.3, CHSTAT=0.25,TWISTA=0.0,TYPE=1.0$ NACA-V-4-0012 CASEID SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG DAMP NEXT CASE
Выходной файл, сгенерированный ВВС США Цифровой DATCOM для той же горизонтальной телом крылом вертикальной хвостом настройки хвоста, работающей на основе пяти альф, двух Чисел Маха и двух высот, может быть просмотрен путем ввода type astdatcom.out
в Окне Команды MATLAB.
Используйте функцию datcomimport
, чтобы принести Цифровые данные DATCOM в среду MATLAB.
alldata = datcomimport('astdatcom.out', true, 0);
Функция datcomimport
создает массив ячеек структур, содержащих данные из Цифрового выходного файла DATCOM.
data = alldata{1} data = struct with fields: case: 'SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG' mach: [0.1000 0.2000] alt: [5000 8000] alpha: [-2 0 2 4 8] nmach: 2 nalt: 2 nalpha: 5 rnnub: [] hypers: 0 loop: 2 sref: 225.8000 cbar: 5.7500 blref: 41.1500 dim: 'ft' deriv: 'deg' stmach: 0.6000 tsmach: 1.4000 save: 0 stype: [] trim: 0 damp: 1 build: 1 part: 0 highsym: 0 highasy: 0 highcon: 0 tjet: 0 hypeff: 0 lb: 0 pwr: 0 grnd: 0 wsspn: 18.7000 hsspn: 5.7000 ndelta: 0 delta: [] deltal: [] deltar: [] ngh: 0 grndht: [] config: [1x1 struct] cd: [5x2x2 double] cl: [5x2x2 double] cm: [5x2x2 double] cn: [5x2x2 double] ca: [5x2x2 double] xcp: [5x2x2 double] cla: [5x2x2 double] cma: [5x2x2 double] cyb: [5x2x2 double] cnb: [5x2x2 double] clb: [5x2x2 double] qqinf: [5x2x2 double] eps: [5x2x2 double] depsdalp: [5x2x2 double] clq: [5x2x2 double] cmq: [5x2x2 double] clad: [5x2x2 double] cmad: [5x2x2 double] clp: [5x2x2 double] cyp: [5x2x2 double] cnp: [5x2x2 double] cnr: [5x2x2 double] clr: [5x2x2 double]
По умолчанию недостающие точки данных установлены в 99 999, и точки данных установлены в NaN, где никакие методы DATCOM не существуют или где метод не применим.
Это видно в Цифровом выходном файле DATCOM и исследовании импортированных данных это , , , и имейте данные только в первом альфа-значении. Вот импортированные значения данных.
data.cyb ans(:,:,1) = 1.0e+004 * -0.0000 -0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 ans(:,:,2) = 1.0e+004 * -0.0000 -0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 data.cnb ans(:,:,1) = 1.0e+004 * 0.0000 0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 ans(:,:,2) = 1.0e+004 * 0.0000 0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 data.clq ans(:,:,1) = 1.0e+004 * 0.0000 0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 ans(:,:,2) = 1.0e+004 * 0.0000 0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 data.cmq ans(:,:,1) = 1.0e+004 * -0.0000 -0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 ans(:,:,2) = 1.0e+004 * -0.0000 -0.0000 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999 9.9999
Недостающие точки данных будут заполнены значениями для первой альфы, поскольку эти точки данных предназначаются, чтобы использоваться для всех альфа-значений.
aerotab = {'cyb' 'cnb' 'clq' 'cmq'}; for k = 1:length(aerotab) for m = 1:data.nmach for h = 1:data.nalt data.(aerotab{k})(:,m,h) = data.(aerotab{k})(1,m,h); end end end
Вот обновленные импортированные значения данных.
data.cyb ans(:,:,1) = -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 ans(:,:,2) = -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 -0.0035 data.cnb ans(:,:,1) = 1.0e-003 * 0.9142 0.8781 0.9142 0.8781 0.9142 0.8781 0.9142 0.8781 0.9142 0.8781 ans(:,:,2) = 1.0e-003 * 0.9190 0.8829 0.9190 0.8829 0.9190 0.8829 0.9190 0.8829 0.9190 0.8829 data.clq ans(:,:,1) = 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 ans(:,:,2) = 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 0.0974 0.0984 data.cmq ans(:,:,1) = -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899 ans(:,:,2) = -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899 -0.0892 -0.0899
Можно теперь построить аэродинамические коэффициенты:
h1 = figure; figtitle = {'Lift Curve' ''}; for k=1:2 subplot(2,1,k) plot(data.alpha,permute(data.cl(:,k,:),[1 3 2])) grid ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')']) title(figtitle{k}); end xlabel('Angle of Attack (deg)')
h2 = figure; figtitle = {'Drag Polar' ''}; for k=1:2 subplot(2,1,k) plot(permute(data.cd(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2])) grid ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')']) title(figtitle{k}) end xlabel('Drag Coefficient')
h3 = figure; figtitle = {'Pitching Moment' ''}; for k=1:2 subplot(2,1,k) plot(permute(data.cm(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2])) grid ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')']) title(figtitle{k}) end xlabel('Pitching Moment Coefficient')