我是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会导致此错误吗?
答案 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