使用IDL调用MATLAB之前所生成的人工神经网络进行遥感影像计算,部分代码如下:
;creat matlab com
oMatlab1= obj_new('IDLcomIDispatch$ProgId$Matlab_application_7_11')
oMatlab1 -> Execute,'clear all'
str1='E:\Dir_noradiance.mat'
oMatlab1 -> PutWorkspaceData, 'str11', 'base', str1
oMatlab1 -> Execute,'ANN_Dir=load(str11);'
oMatlab1 -> Execute,'Dir_ps_c=ANN_Dir.ps;'
oMatlab1 -> Execute,'Dir_ts_c=ANN_Dir.ts;'
oMatlab1 -> Execute,'Dir_net_c=ANN_Dir.RM_fnet;'
index_pureclear=where(CFinal eq 5,ct_pureclear)
if ct_pureclear gt 0 then begin
input_Dir=[transpose(Alt[index_pureclear]),transpose(cosSZA[index_pureclear]),transpose(AOD_data[index_pureclear])]
i nput_Dir=reform(temporary(input_Dir),ct_pureclear,3)
oMatlab1 -> PutWorkspaceData,'input_Dircopy','base',input_Dir
oMatlab1 -> Execute,'ANN_Dir_Flux=Function_Net(input_Dircopy,Dir_ps_c,Dir_ts_c,Dir_net_c);'
oMatlab1 -> GetWorkspaceData,'ANN_Dir_Flux','base',tmp_Dir
提示错误:
IDLCOMIDISPATCH$PROGID$MATLAB_APPLICATION_7_11::GETWORKSPACEDATA: Unable to call method GETWORKSPACEDATA Unable to get COM error information or there is no COM error information available.
发生意外。
停在oMatlab1 -> GetWorkspaceData,'ANN_Dir_Flux','base',tmp_Dir这行。
涉及到的函数如下:
function tmp=Function_Net(inputd,ps,ts,RM_fnet)
pnewn=mapminmax('apply', inputd,ps);
anewn=sim(RM_fnet,pnewn); %用训练好的网络进行模拟,获得结果为anewn
tmp=mapminmax('reverse',anewn,ts);%将模拟结果anewn根据目标数据极值归一化的信息进行还原
end