人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

IDL工作日志

已有 6663 次阅读 2013-9-27 11:13 |个人分类:知识|系统分类:科研笔记| IDL

20141121

coyote软件包的问题
cgps_config.pro中不能使用Language_Level关键词,注释掉就能用。

据软件包作者说,这可能是IDL版本低的原因。我用的IDL是7.1版的。



20140429

拟合两个高斯成分。

expr='P[0]*exp(-((x-P[1])/P[2])^2/2.0)+P[3]*exp(-((x-P[4])/P[5])^2/2.0)'
start=[1.0,5.1,0.1,1.0,6.5,0.3]
rerr=flux*0.0+1.0
pc=replicate({fixed:0,limited:[0,0],limits:[0.D,0.D]},6)
pc(0).limited(0)=1
pc(0).limits(0)=0.5
pc(1).limited(0)=1
pc(1).limits(0)=5.0
pc(1).limited(1)=1
pc(1).limits(1)=6.0
pc(2).limited(0)=1
pc(2).limits(0)=0.0
pc(2).limited(1)=1
pc(2).limits(1)=0.5
pc(3).limited(0)=1
pc(3).limits(0)=0.5
pc(4).limited(0)=1
pc(4).limits(0)=6.0
pc(4).limited(1)=1
pc(4).limits(0)=7.0
pc(5).limited(0)=1
pc(5).limits(0)=0.0
pc(5).limited(1)=1
pc(5).limits(1)=0.5

result=MPFITEXPR(expr,z/1000.0,flux,rerr,start)


20140426


之前知道怎么从X窗口截图,大致是
wset,0
data=tvrd(1,1,500,300,/true)
write_jpeg,'文件名',data,/true,quality=100

今天小汤注意到wset,0里面的参数是重要的,之前我都忽略了。在之前设置了窗口号的情况下,比如
window, 1, xsize=xx,ysize=xx
wset后面的参数就应该是1。



20140413

在非默认位置标注坐标值(以横轴为例)
1. 在Plot或者同类命令中设置xticks=N (即,设置要标注的坐标值的个数)
2. 设置系统变量!X.TICKV=[xx,xx,xx] (设置要标注坐标值的位置的坐标)
3. 设置系统变量!X.TICKNAME=['xx','xx','xx'] (爱标什么标什么)



20140331

生成动态文件名(bet是变量)
outputfits=strcompress('cvdfield_beta_'+string(floor(bet),format='(I1)')+$
          '.fits')



20140329

获取系统时间

caldat,systime(/julian),month,day,year,hour,min,sec




20140326

改变图像颜色分布的方法:
常用:
1. 设置截断
plotscale=2.0
bad=where(image gt max(image)/plotscale,count)
if(count gt 0) then image(bad)=max(image)/plotscale
2. 取对数,再去除NaN
image=alog10(image)
bad=where(finite(image) eq 0,count)
if(count gt 0) then image(bad)=min(image(not bad))
不常用:
3. 把角上的一个点设为特定值,从而使得整幅图(除了这个点)的颜色沿颜色棒变化。
image(1,1)=min(image)-1.0



20131101

1. 坐标转换(ec2local.pro)
PRO ec2local,ra,dec
COMMON SITE, LAT,LNG,TZONE
while 1 do begin
LAT=40.55666d0 ;40d33m23.97s declination of Miyun
LNG=116.97345d0 ;7h47m53.628s right ascension of Miyun
TZONE=8.0d0 ; time zone 8E
julianut=SYSTIME(/JULIAN,/UTC)
;print,format=e15.4,julianut
print,'julian ut:'
print,julianut,format="(f15.6)"
eq2hor,ra,dec,julianut,alt,az,ha,lat=LAT,lon=LNG,refract_=0
print,'az el =',az, alt
el=alt/180.0*!PI
az=az/180.0*!PI
R = 18*(1.0-0.4665);
x = -1.0*R*cos(el)*sin(az);
y = -1.0*R*cos(el)*cos(az);
z = -1.0*R*sin(el);
print,'xyz (meter) ='
print,format="(3f9.3)",x,y,z
print,' '
wait,0.2
endwhile
END



20130930

fft_simu16_16_16.pro



20130927

生成满足某种分布的随机场
PRO fft_simu
xdim=128L
ydim=128L
zdim=128L
delta=1.0
seed=100000L
v_field=randomn(seed,xdim,ydim,zdim)
vk_field=fft(v_field)
for i=1L,xdim do begin
   if(i gt xdim/2) then begin
     helpi=xdim-i
   endif else begin
     helpi=i
   endelse
   for j=1L,ydim do begin
       if(j gt ydim/2) then begin
         helpj=ydim-j
       endif else begin
         helpj=j
       endelse
       for k=1L,zdim do begin
           if(k gt zdim/2) then begin
             helpk=zdim-k
           endif else begin
             helpk=k
           endelse
           knorm=sqrt(helpi^2+helpj^2+helpk^2)
           if(knorm gt 0) then begin
             vk_field(i-1,j-1,k-1)=vk_field(i-1,j-1,k-1)*knorm^(-delta)
           endif
       endfor
   endfor
endfor
v_fieldp=float(fft(vk_field,/inverse))
dim=xdim*ydim*zdim
index=1L
cx=dindgen(dim)
cy=dindgen(dim)
v=dindgen(dim)
for i=1L,xdim do begin
   for j=1L,ydim do begin
       for k=1L,zdim do begin
           cx(index-1)=i*1.0d
           cy(index-1)=j*1.0d
           v(index-1)=v_fieldp(i-1,j-1,k-1)
           index=index+1
       endfor
   endfor
endfor
;print,v
help,v

END


20130906
LOESS回归方法的IDL程序

http://www-astro.physics.ox.ac.uk/~mxc/idl/

GNU Data Language (模仿IDL的一种语言)




https://blog.sciencenet.cn/blog-117333-728243.html

上一篇:学说话
下一篇:人尽其才,做个普通人
收藏 IP: 159.226.171.*| 热度|

1 李宇斌

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-11 10:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部