IDL数学分析与插值

橙三吉。 提交于 2019-11-29 19:22:54

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

其余内容不再赘述,自己本身还看不太懂。
等到下半学期听了班主任讲授的数字图像处理我再回来处理,现在的话基础不牢,空中楼阁是不行的。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!