将R脚本转换为IDL:数组操作

时间:2018-04-19 05:48:33

标签: r idl-programming-language

我是R和IDL的初学者。我试图将R脚本转换为IDL。

R可以使用t1(array [100000])进行数组操作,但IDL不能。

  

错误:CZ的数组下标必须与源表达式的大小相同

s1= 100000.

c1 = array[200000]

n1 = s1*2+2

t1 = array[100000]

————————————————————————————————

(function)

f03, c1, s1, n1



cz = fltarr(n1,3)       

cz[0:((2*s1)-1),0] = c1

cz[1:(2*s1),1] = c1

cz[2:((2*1)+1),2] = c1

cr = cz[0:(n1-1),1] - cz[0:(n1-1),2]

cl = cz[0:(n1-1),1] - cz[0:(n1-1),0]

p1 = where(cr GE 0.0 AND cl GE 0.0 AND (cz[0:(n1-1),1]) GE 1.4)



n2 = n_elements(p1)

ct = fltarr(n2+1,2)

ct[0:n2-1,0] = p1 

ct[1:n2,1] = p1

c2 = ct[*,0] - ct[*,1]

ip = where(c2 GT 2.) 

ch = p1[ip]



return, ch

--------------------------------

p1 = f03(c1,s1,n1) ;;;;; function works here

f1 = f03(t1,s1,n1)  ;;;;; error on array size

我在R中使用了MATRIX和AS.MATRIX(对于f03)。 FLTARR会导致此错误吗?

1 个答案:

答案 0 :(得分:0)

你的台词:

cz = fltarr(n1, 3)
cz[0:((2 * s1) - 1), 0] = c1

cz的第一个尺寸为2000002且c1为200000个元素时,=符号左右两侧的尺寸匹配,即{{1} }}是2000000个元素,就像0:199999的大小一样。

但是在第二次调用中,c1只有100000个元素,但左侧仍然要求2000000个元素。

另外,定义一个类似的函数:

c1