Вставить переменную после строки для именования выходного файла в цикле? 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")'), $