如何在for循环中声明变量? (IDL)

2024-01-12

例如,

我的文件以00.dat、01.dat、02.dat...,每个文件包含多个列,我使用READCOL将它们读入变量。

for i = 0, n-1 do begin
    readcol, string(i, F='(I02)')+'.dat', F='D,D', a0, b0
    readcol, string(i, F='(I02)')+'.dat', F='D,D', a1, b1
    .
    .
    c1 = a1 / a0
    c2 = a2 / a0
    .
    .
    d1 = b1 / b0
    d2 = b2 / b0
    .
    .
endfor

这工作正常,但如果有一百个变量,我无法一一键入所有变量。

因此,我想使用for循环来生成:a(i)、b(i)、c(i)、d(i)。从这个意义上说,代码将如下所示:

for i = 0, n-1 do begin
    readcol, string(i, F='(I02)')+'.dat',F='D,D', a(i), b(i)
endfor

for i = 0, n-1 do begin
    c(i) = a(i) / a(0)
    d(i) = b(i) / b(0)
endfor

但这不起作用,有没有什么方法可以在 for 循环和做数学时声明变量?

(我的母语不是英语。如果我的问题有任何不清楚的地方,请告诉我。谢谢!)


很高兴在 StackOverflow 上看到另一位 IDL 程序员!

我认为部分问题在于READCOL期望简单的变量名称 它的输出,在你的第二个例子中,你给它数组表达式,比如a(i) and b(i)代替a and b.

如果我正确理解你的问题,你想替换一维数组a0, a1, b0, b1等等,来自您的第一个示例,带有二维数组a, b, 等等,其中每个数组都有维度(nfiles、samples_per_file)。所以如果你知道 提前从每个文件中读取多少行,你可以这样做:

a=dblarr(n,samples_per_file)
b=dblarr(n,samples_per_file)
; similarly for c, d, etc.

for i = 0, n-1 do begin
    readcol, string(i, F='(I02)')+'.dat',F='D,D', x, y
    a[i,*] = x
    b[i,*] = y
    c[i,*] = x/x[0]
    d[i,*] = y/y[0]
endfor

这个版本通过了READCOL它期望的简单变量名称,然后复制它们 到二维变量的子数组中。

如果您事先不知道每个文件中有多少个样本,您可以分配 第一次循环迭代期间的二维数组:

for i = 0, n-1 do begin
    readcol, string(i, F='(I02)')+'.dat',F='D,D', x, y
    if (i EQ 0) then begin
       samples_per_file = n_elements(x)
       a = dblarr(n, samples_per_file)
       b = dblarr(n, samples_per_file)
       c = dblarr(n, samples_per_file)
       d = dblarr(n, samples_per_file)
    endif
    a[i,*] = x
    b[i,*] = y
    c[i,*] = x/x[0]
    d[i,*] = y/y[0]
endfor

当然,这一切都假设每个文件包含相同数量的样本。如果不, 你可能需要改变a, b, c, and d到一维指针数组, 然后使用PTR_NEW在读取每个文件的数据时为其分配内存。

(请注意,我使用了方括号[]数组索引的符号,我发现 比阅读更容易一点a(i), b(i)等等,这可能与函数调用混淆。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在for循环中声明变量? (IDL) 的相关文章

随机推荐

  • 将纬度/经度转换为 JTS?

    我正在尝试将 hibernate 空间与 JPA 集成以进行地理搜索 我一直在参考tutorial http www hibernatespatial org tutorial html在官方网站上 我与 hibernatespatial
  • Excel VBA 按标题名称而不是列进行搜索

    我需要一个执行以下操作的 VBA 宏 这部分工作正常 我希望它在sheet1上创建一个新列并将其命名为标题名称然后为其着色 Columns P P Select Selection Insert Shift xlToRight CopyOr
  • 上半部和下半部概念澄清

    根据上半部和下半部的指导方针 当任何中断发生时 都会由两个半部处理 所谓的上半部分是实际响应中断的例程 您用 request irq 注册的例程 下半部分是由上半部分安排的例程 稍后在更安全的时间执行 上半部处理程序和下半部处理程序之间的最
  • Pytest 使用线程无限期运行

    我正在使用 PyTest 为个人项目执行一些单元测试 pytest 调用一个初始化多个线程的类 由于这些线程无限期地运行 它们永远不会关闭 并且 pytest 永远不会终止 这意味着我运行测试的 gitlab 管道自动失败 线程对于测试和模
  • 使用WCF进行大数据传输

    我在一个项目中 必须使用 wcf 服务在源和客户端之间来回传输大量数据 将数据作为数据集 XML 对象数组传输的最佳选项是什么 或者还有其他选项吗 您可以使用 WCF 流 以下是了解更多信息的链接 大数据和流媒体 http msdn mic
  • 单个实体中的实体框架 1 到 0..1 关系

    Scenario 我有一个场景 在单个实体中为数据库中的两个表定义了 1 对 1 关系 我通过使用以下映射来做到这一点 为了保护无辜者 名称已更改 modelBuilder Entity
  • Symfony2 DoctrineExtensions preSoftDelete 事件调用

    我在为 Symfony2 实现 L3pp4ard DoctrineExtensions Bundle 中的 preSoftDelete 事件时遇到问题 softDelete 函数工作得很好 但我想在deletedAt 日期时间 旁边添加一个
  • 如何使用已排序的键列表对 OrderedDict 进行排序?

    假设我有一个collections OrderedDict对象及其重新排列的键列表 ordereddict collections OrderedDict key 78 value key 40 value key 96 value key
  • 我可以使用 Perl 正则表达式来匹配平衡文本吗?

    我想在 Perl 中匹配括号等中包含的文本 我怎样才能做到这一点 这是来自官方常见问题解答 http faq perl org We re 将 perlfaq 导入 Stack Overflow https meta stackexchan
  • print() / println() 执行速度慢吗?

    我有一个有几千行的应用程序 在该代码中有很多 println 命令 这会减慢应用程序的速度吗 它显然是在模拟器中执行的 但是当您从应用程序商店 TestFlight 存档 提交和下载应用程序时会发生什么 这段代码仍然是 活动的 吗 被 注释
  • 对于访问创建它的脚本的每个用户来说,mysql临时表是唯一的...?

    当用户在特定日期之间搜索免费酒店时 在寻找一种临时保存搜索结果的方法时 我遇到了临时表 但某些问题即使在 mysql 手册中也没有得到解答 比如 临时表对于执行脚本的每个用户来说都是唯一的吗 或者当两个不同的用户同时运行脚本时它会被覆盖 桌
  • 将 Excel 文件从压缩文件夹读入 R 数据帧

    我有一个 Excel 文件 xls 扩展名 位于一个压缩文件夹内 我想将其作为数据帧读取到 R 中 我加载了 gdata 库 并将工作目录设置为包含压缩文件夹的文件夹 当我输入以下语法时 data frame1 lt read xls un
  • Azure Devops YAML 管道 - 如何重复任务

    在我的 YAML 管道中 我有一个部署作业 stage deployment to development jobs deployment deployment to development displayName Deploy to De
  • 来自不同插件的重复控制器名称

    我有一个关于 Cakephp2 3 的文件加载系统的问题 我有两个插件 让我们称它们为 联系人 和 经理 加载如下 CakePlugin load Contacts CakePlugin load Managers 它们每个都有一个名为 D
  • DBCP 连接池登录超时

    根据DBCP文件 http commons apache org dbcp apidocs org apache commons dbcp BasicDataSource html setLoginTimeout 28int 29 Basi
  • 如何将包含连字符的键的对象解构为变量? [复制]

    这个问题在这里已经有答案了 如何从键包含连字符的对象解构属性 Eg accept ranges bytes cache control public max age 0 content length 1174 content type ap
  • 为 Chrome 扩展注入 CSS

    我对 Chrome 扩展开发还很陌生 我知道可以注入CSS 但是是否可以为特定的 URL 注入它 例如 每当我访问 google com 时 CSS 就会被注入 谢谢您的帮助 那么 您有 2 个选择 编程注入和内容脚本 这些名字可能听起来非
  • 将 csv 文件导入 java swing 表

    我有纽约证券交易所所有股票报价的 csv 文件 第一列是符号第二列是公司名称 我有一个使用 java swing 库在 netbeans 中制作的搜索框和表格 现在 当我在框中输入名称时 它会返回正确的行数 例如 如果我搜索 GOOG 它只
  • 根据调整窗口大小的动态高度 div

    HTML div class header Header div div class body table class body table tr td Cell td td Cell td td Cell td tr tr td Cell
  • 如何在for循环中声明变量? (IDL)

    例如 我的文件以00 dat 01 dat 02 dat 每个文件包含多个列 我使用READCOL将它们读入变量 for i 0 n 1 do begin readcol string i F I02 dat F D D a0 b0 rea