0

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 を使用したいと思います (ペナルティはループで変化します。

事前にありがとう、私はそれが非常に簡単な質問であることを知っています.

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 に答える