0

我是 ENVI/IDL 的初学者,

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

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

伽玛=1.167

罚款=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 (惩罚随着循环而变化。

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

4

1 回答 1

2

我想你想要这样的东西:

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")'), $
于 2015-09-13T15:53:38.727 回答