IDL两步图

问题描述 投票:0回答:1

我正在努力设定随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
graph idl-programming-language
1个回答
0
投票

问题是您的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]
© www.soinside.com 2019 - 2024. All rights reserved.