You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IDL中基于公式创建二维数组及foreach循环故障求助

IDL数组赋值与二维公式数组生成方案

1. 循环仅最后一列生效的修复方案

该问题的核心原因是IDL中foreach迭代逻辑存在兼容歧义:foreach默认遍历数组的元素值而非索引,即使本例中xx的元素值与索引恰好重合,部分版本的IDL对foreach内的数组切片赋值支持不稳定,替换为显式遍历索引的标准for循环即可解决:

pxx=fltarr(10, 10)
xx = indgen(10)
yy = indgen(10)

; 替换为for循环遍历索引
for k=0, n_elements(xx)-1 do begin
  pxx[k,*]=3*k
endfor
  
print, pxx

2. 生成符合x²+y公式的二维数组

IDL原生支持数组广播运算,无需写循环即可快速生成目标数组,运算效率远高于循环实现:

x = indgen(10)
y = indgen(10)
; 将x转为10行1列的列向量,y保持1行10列的行向量,运算时自动广播为10*10二维数组
pxx = (reform(x, 10, 1))^2 + y

如果需要用循环逻辑方便理解,也可以用双层for循环实现:

pxx = fltarr(10, 10)
x = indgen(10)
y = indgen(10)
for i=0, 9 do begin
  for j=0,9 do begin
    pxx[i,j] = x[i]^2 + y[j]
  endfor
endfor

生成数组后直接调用IDL的contour程序即可绘制等高线:

contour, pxx, x, y, title='x²+y等高线图'

内容的提问来源于stack exchange,提问作者Francesco Azzollini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:24:04