/*参数判断*/
%IF (%DATATYP(&MuX.) NE NUMERIC ) OR
(%DATATYP(&VarX.) NE NUMERIC ) OR
(%DATATYP(&MuY.) NE NUMERIC ) OR
(%DATATYP(&VarY.) NE NUMERIC ) %THEN %DO;
%PUT %STR(ERROR:参数设置不全!);
%ABORT;
%END;
%IF (%DATATYP(&XStar.) NE NUMERIC ) %THEN %LET XStar=%SYSFUNC(CEIL(%SYSEVALF(&MuX.-3*%SYSFUNC(SQRT(&VarX.)))));
%IF (%DATATYP(&XEnd.) NE NUMERIC ) %THEN %LET XEnd=%SYSFUNC(CEIL(%SYSEVALF(&MuX.+3*%SYSFUNC(SQRT(&VarX.)))));
%IF (%DATATYP(&YStar.) NE NUMERIC ) %THEN %LET YStar=%SYSFUNC(CEIL(%SYSEVALF(&MuY.-3*%SYSFUNC(SQRT(&VarY.)))));
%IF (%DATATYP(&YEnd.) NE NUMERIC ) %THEN %LET YEnd=%SYSFUNC(CEIL(%SYSEVALF(&MuY.+3*%SYSFUNC(SQRT(&VarY.)))));
%IF (%DATATYP(&Grid.) NE NUMERIC ) %THEN %LET Grid=0.25;
%IF (%DATATYP(&RotateValue.) NE NUMERIC ) %THEN %LET RotateValue=65;
%IF (%DATATYP(&ZmaxValue.) NE NUMERIC ) %THEN %LET ZmaxValue=0.15;
%IF (%DATATYP(&XTICK.) NE NUMERIC ) %THEN %DO;
%LET XTICK=11;
%END;
%ELSE %LET XTICK=%EVAL(&XTICK.+1);
/*生成数据集*/
DATA _TEMP_;
DO X=&XStar. TO &XEnd. BY &Grid.;
DO Y=&YStar. TO &YEnd. BY &Grid.;
Z=1/( 2*3.14159265359*SQRT(&VarX.*&VarY.*(1-&Rou.**2)) )
* EXP( -1/(2*(1-&Rou.**2))*
(((X-&MuX.)/SQRT(&VarX.))**2+((Y-&MuY.)/SQRT(&VarY.))**2-2*&Rou.*((X-&MuX.)/SQRT(&VarX.))*((Y-&MuY.)/SQRT(&VarY.)) ) ) ;
OUTPUT;
END;