1

分類のために、MATLABで分類器のモデルをいくつか作成しています。このためにクラスを使用しClassificationKNNます。マトリックス内に複数のモデル(またはこのクラスのオブジェクト)を格納したいと思います。通常、中括弧({})を使用して、マトリックス内にマトリックスにアクセスして作成できます。私のループは次のようになります。

models = []
for i = 1:length(x)
    models = [models, {ClassificationKNN.fit(x,y)}]
end

残念ながら、これはサイズ(1,3)の行列モデルを返しますが、すべてのセルが空であるため、モデルが失われます...すべてのモデルが行列に格納されていることを確認するにはどうすればよいですか?計算の後半ですべてのモデルが必要であり、マトリックス内の位置が重要であるため、これを行う必要があります...
何かアイデアはありますか?

4

2 に答える 2

0

モデルのセル配列が必要ですよね? それは確かにそのように見えます、それがうまくいくならこれを試してください:

models = {}
for ii = 1:length(x)
    models = [models, {ClassificationKNN.fit(x,y)}]
end

ClassificationKNN.fit(x,y)また、毎回同じ引数を使用して呼び出しをループします。これは単なるテストまたは例の擬似コードです。コメントが言うように、次のように事前に割り当てるのが最善です:

models = cell(length(x),1);
for ii = 1:length(x)
    models{ii} = ClassificationKNN.fit(x,y);
end

でも、多分どっちでもいいです。

于 2012-09-20T16:02:07.847 に答える
0

macduffs の投稿のおかげで、何が起こっているのかがようやくわかりました。彼の命題を読んでいるうちに、オブジェクトのセル配列を取得する場合、それが実際に正しい方法であることに気付きました。
試した後、変数エディターで配列を開くと、配列は再び空に見えました。配列の最初のセルを呼び出して、実際に空であるかどうかを確認してみました。保存していたオブジェクトが返されました。これは、質問が回答されたことを意味します。
その後、独自の方法に戻って、それがうまく機能するかどうかを確認しました。セルを呼び出すと、オブジェクトも返されました。

結論: 変数エディターを信用しないでください ^^.

于 2012-09-21T09:34:09.567 に答える