1.随机数的生成:
result=randomu(seed,d1,d2,…,d8,/double,/long)
生成均匀分布的随机数,seed为种子,默认使用系统时间。d1等设置各个维度上的尺寸,/double,/long设置返回值类型。
result=randomn()用法关键字等相同,只不过生成的是正态分布的随机数组。
IDL>result=randomu(seed,3,3,3,/double) ;生成均匀随机数
IDL> help,result ;查看
RESULT DOUBLE = Array[3, 3, 3] ;是我创建的三维数组没错了
2.相关性分析
result=correlate(x[,y])
可以分析x与y之间的相关系数,当x为二维数组时,将计算各列之间的相关系数。
IDL> x=[1,2,3,4,5]
IDL> y=[2,4,6,8,10]
IDL> result=correlate(x,y)
% Compiled module: CORRELATE.
IDL> print,result
1.00000
;
IDL> x=[[1,2,3,4,5],[2,4,6,8,10]]
IDL> result=correlate(x)
IDL> print,result
1.00000 1.00000 1.00000 1.00000 1.00000
1.00000 1.00000 1.00000 1.00000 1.00000
1.00000 1.00000 1.00000 1.00000 1.00000
1.00000 1.00000 1.00000 1.00000 1.00000
1.00000 1.00000 1.00000 1.00000 1.00000
数学上我这块还没学,弄不太明白。
类似用法的还有:
result=m_correlate(x,y) 计算复相关系数
result=p_correclate(x,y,c) 计算偏相关系数,c参数说明剔除谁的影响。
等
3.回归分析(感觉比上面那个有用的多)
result=regress(x,y,const=var1,correlation=var2,mcorrelation=var3,ftest=var4,yfit=var5)
其中x,y必填。
x自变量为一维或者二维数组,y因变量为一维数组。const返回回归方程常数项,correlation返回相关系数,m_correlation返回复相关系数。,ftest返回f检验值,yfit返回估算得到的因变量。
数学上还是没学不懂。
4.显著水平检验(誊抄一下徐永明吧,不懂):
进行f检验
result=f_pdf(v,dfn,dfd)
v设置临界值,可以为标量或者数组。参数dfn用于设置分子自由度;参数dfd用于设置分母自由度。
相同用法的还有:
result=f_cvf(p,dfn,dfd) 计算给定显著水平及自由度所对应的F临界值
p设置显著水平,dfn和dfd设置分子自由度和分母自由度。
result=t_pdf(v,df) 进行t检验,返回单侧置信度。
v设置临界值,df设置自由度(样本数目-1)
result=t_cvf(p,df)用于计算给定显著水平及自由度所对应的T 单侧临界值
p设置显著水平,df设置自由度
5.曲线拟合(这个我还稍微懂一点)
result=comfit(x,y,a[,/exponential | ,/gompertz | ,/hyperbolic | ,/logistic | ,/logsquare],iter=var1,itmax=f_var2,yfit=var3)
参数x,y为输入的自变量和因变量,参数a为使用模型的初始参数,是一个数组。
后面的exponential到logsquare为不同的模型,具体查看IDL帮助。
iter返回迭代次数,imax用于设置迭代最大次数,yfit用于返回y的拟合值。
Result = CURVEFIT( X, Y , Weights, A [, Sigma] [, CHISQ=variable] [, /DOUBLE] [, FITA=vector] [, FUNCTION_NAME=string] [, ITER=variable] [, ITMAX=value] [, /NODERIVATIVE] [, STATUS={0 | 1 | 2}] [, TOL=value] [, YERROR=variable] )
自定义函数拟合(具体查看IDL帮助,徐的书不全)
6.插值
一维数组插值
result=interpol(v,x,xout,/lsquadratic,/quadratic,/spline,/NAN)
v为输入的数组,x为v中各个元素对应的横坐标值,xout为插值结果数组中各个元素对应的横坐标值,是一个输出的参数。后面的三个关键字是不同的插值算法。最后的关键字可以用于设置插值的时候不考虑数据中的nan值。
IDL> x=[2,4,6,8,10] ;设置输入数组
IDL> v=[0,2,4,6,8] ; v和x写反了 我透
IDL> xout=[1,3,5,7] ; 设置插值位置在1 3 5 7
IDL> result=interpol(x,v,xout) ;结果得出
% Compiled module: INTERPOL.
IDL> result ; 展示
3 5 7 9
二维数组插值:
result=bilinear(p,ix,jy,missing=value)
实行双线性内插,p为输入的二维数组,ix为P中个元素在插值完成后所在的对应下标。
IDL> a=[[2,4],[6,8],[10,12]]
IDL> ix=[0,2]
IDL> jy=[0,2,4]
IDL> result=bilinear(a,ix,jy)
IDL> result
2 4
10 12
10 12
其余内容不再赘述,自己本身还看不太懂。
等到下半学期听了班主任讲授的数字图像处理我再回来处理,现在的话基础不牢,空中楼阁是不行的。
来源:https://blog.csdn.net/RSstudent/article/details/100899033