IDL 两步图
IDL two step graph
我正在努力设置随 x 范围变化的 y(x) 条件。作为下面的示例,代码想要在 x=0 和 x=5.1 之间绘制 y=x;否则 y=2x.
编译后,代码吐出以下内容:在此上下文中,表达式必须是标量或 1 元素数组:
换句话说,不知道如何将数组变量 'x' 赋值到 if 语句中。
提前感谢大家的帮助。
PRO test
x = findgen(101.0,start=0)/10.0 ; 0.0 start, 10.0 end increment of 0.1
print,x
if x lt 5.1 then begin
y = 1.0 * x ;
endif else begin
y = 2.0* x
endelse
graph1=plot(x,y,thick=2,NAME=first,/CURRENT, $
linestyle = 0, ytitle=' y',xtitle='x' ) ; O
END
问题出在您的 IF
语句中的测试。使用 WHERE
而不是执行以下操作。
y = x ;; need to initialize variable
low = WHERE(x lt 5.1,lw,COMPLEMENT=upp,NCOMPLEMENT=up)
IF (lw[0] GT 0) THEN y[low] = x[low] ;; technically don't need this line
IF (up[0] GT 0) THEN y[upp] = 2e0*x[upp]
我正在努力设置随 x 范围变化的 y(x) 条件。作为下面的示例,代码想要在 x=0 和 x=5.1 之间绘制 y=x;否则 y=2x.
编译后,代码吐出以下内容:在此上下文中,表达式必须是标量或 1 元素数组:
换句话说,不知道如何将数组变量 'x' 赋值到 if 语句中。
提前感谢大家的帮助。
PRO test
x = findgen(101.0,start=0)/10.0 ; 0.0 start, 10.0 end increment of 0.1
print,x
if x lt 5.1 then begin
y = 1.0 * x ;
endif else begin
y = 2.0* x
endelse
graph1=plot(x,y,thick=2,NAME=first,/CURRENT, $
linestyle = 0, ytitle=' y',xtitle='x' ) ; O
END
问题出在您的 IF
语句中的测试。使用 WHERE
而不是执行以下操作。
y = x ;; need to initialize variable
low = WHERE(x lt 5.1,lw,COMPLEMENT=upp,NCOMPLEMENT=up)
IF (lw[0] GT 0) THEN y[low] = x[low] ;; technically don't need this line
IF (up[0] GT 0) THEN y[upp] = 2e0*x[upp]