在用于命名循环中的输出文件的字符串后插入一个变量? ENVI/IDL

insert a variable after a string for naming an output file in a loop? ENVI/IDL

我完全是 ENVI/IDL,

的初学者

如何将变量插入字符串中以在循环中命名输出文件?

我正在尝试使用不同的值和参数组合(即伽玛和惩罚因子)循环支持向量机分类器。 这就是我的想法

gamma=1.167

for penalty=25,1000,25

ENVI_DOIT, 'ENVI_SVM_DOIT', DIMS=array, FID=fid , KERNEL_GAMMA=gamma, OUT_NAME='xxx' , PENALTY=penalty, POS=array, ROI_IDS=array

关于这个 OUT_NAME='xxx' 我想要 'xxx'gammapenalty(惩罚随着循环而变化。

提前谢谢你,我知道这是一个非常简单的问题,但有时最简单的问题对大多数人来说可能是显而易见的,而对于初学者来说却很难找到。

我想你想要这样的东西:

gamma=1.167
for penalty = 25, 1000, 25 do begin
  ENVI_DOIT, 'ENVI_SVM_DOIT', DIMS=array, FID=fid, $
             KERNEL_GAMMA=gamma, $
             OUT_NAME='xxx-' + strtrim(gamma, 2) + '-' + strtrim(penalty, 2), $
             PENALTY=penalty, POS=array, ROI_IDS=array
endfor

在文档中查找 STRTRIM;转换为字符串并删除空格是一个有用的例程(2 表示删除前导和尾随空格)。

顺便说一句,我可能会使用格式代码来指定 OUT_NAME,但是除非您已经熟悉 C 格式代码,否则这些对您来说可能更复杂:

OUT_NAME=string(gamma, penalty, format='(%"xxx-%0.3f-%04d")'), $