Вставить переменную после строки для именования выходного файла в цикле? ENVI/IDL

Я абсолютный новичок в ENVI/IDL,

Как я могу вставить переменную в строку для именования выходного файла в цикле?

Я пытаюсь зациклить классификатор машин опорных векторов с различными значениями и комбинациями параметров, например, гамма и штрафной коэффициент. это то, что я думал

гамма =1,167

для штрафа = 25,1000,25

ENVI_DOIT, 'ENVI_SVM_DOIT', DIMS = массив, FID=fid, KERNEL_GAMMA= гамма, OUT_NAME='xxx', PENALTY= штраф, POS= массив, ROI_IDS= массив

для этого OUT_NAME = 'xxx' я хотел бы иметь 'xxx'gammapenalty (с изменением штрафа в цикле.

Заранее спасибо, я знаю, что это очень простой вопрос, но самое простое иногда может быть очевидным для самых, и трудно найти его для новичка.

1 ответ

Решение

Я думаю, что вы хотите что-то вроде:

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")'), $
Другие вопросы по тегам