📄 transform_coeff.pro
字号:
function transform_coeff, coeff, alpha, beta; NAME:; TRANSFORM_COEFF(); PURPOSE:; Compute new polynomial coefficients under a linear transformation ; EXPLANATION:; Suppose one has a (nonlinear) polynomial (similar to the POLY() function); y = C[0] + C[1]*x + C[2]*x^2 + C[3]*x^3 + ...;; and one has a linear transformation in X;; x = alpha*x' + beta; This function computes the new polynomial coefficients under the linear; transformation. ;; CALLING SEQUENCE:; newcoeff = TRANSFORM_COEFF( coeff, alpha, beta); INPUTS:; Coeff - vector of polynomial coefficients (as with POLY()). The ; degree of the polynomial is N_elements(coeff) - 1; Alpha, Beta - numeric scalars defining the linear transformation in X ; OUTPUTS:; NewCoeff - Vector (same size as Coeff) giving the new polyomial ; coefficients; EXAMPLE:; Suppose one has polynomial mapping a nonlinear distortion in the X ; direction of a spectrum;; y = 0.2 + 1.1*x + 0.1*x^2;; if one rebins the spectrum to half the size then the linear transformation; is x = 2.*x'; so alpha = 2 and beta = 0; The new coefficients are; IDL> print, transform_coeff([0.2,1.1,0.1],2.,0) ; ==> [0.2, 2.2, 0.4] ; METHOD:; Performs a binomial expansion of the polynomial and collect like terms; groups.google.com/group/comp.lang.idl-pvwave/msg/11132d96d9c0f93d?hl=en&; REVISION HISTORY:; Written W. Landsman December 2007compile_opt idl2if N_Params() LT 3 then begin print,'Syntax - newcoeff = TRANSFORM_COEFF( coeff, alpha, beta) ' if N_elements(coeff) GT 0 then return,coeff else return,-1endif degree=n_elements(coeff)-1newarray=coeff*0FOR i=0,degree DO BEGIN FOR j=0,i DO BEGIN newarray[j] = newarray[j] + $ coeff[i]*factorial(i)*alpha^j*beta^(i-j)/factorial(j)/factorial(i-j) ENDFORENDFOR return, newarrayend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -