首页 文章

除某些列IDL之外的数组的平均值

提问于
浏览 950
0

嗨我正在尝试编写简单的for循环,使用if循环只计算数组列的平均值(所以我最终只有一个行数组作为平均值),除了列号1051和1552.这里输入数组有2151列和12行 . 平均数组的结果应为2149列和12行 . 这是我写的代码

function specmeanex, a
  m=make_array(2151,1)
  for i=0,2150,1 do begin
    if (i ne 1051) or (i ne 1552) then begin
      m[i,0]=mean(a[i,*])
    endif
  endfor
  plot,m
  return,m
end

如何使用else将空格分配为0?任何人都可以帮助我,因为我对IDL很新

1 回答

  • 0

    你可以添加一个像这样的else子句:

    if (i ne 1051) or (i ne 1552) then begin
      m[i,0]=mean(a[i,*])
    endif else m[i,0] = 0.0
    

    但是,我建议稍微更改代码以删除 for 循环 . IDL在一个语句中对数组进行操作的向量化操作中非常有效,但在循环数组元素时速度很慢 . 在这里,你循环遍历列,这不是那么糟糕,但可以更像IDL .

    试试这段代码:

    function mg_column_mean_exclude, a, exclude_columns
      compile_opt strictarr
    
      m = mean(a, dimension=2)
      m[exclude_columns] = 0.0
    
      return, m
    end
    

    然后你可以调用它类似于你以前的例程,除了你也传入排除列:

    m = mg_column_mean(a, [1051, 1552])
    

相关问题