1

フィット オブジェクトの配列があり、それぞれをいくつかの値で評価する必要があります。これらの適合オブジェクトは数千以上あるため、それらをループして値で評価するのが非常に遅いことがわかりました。では、これに対してある種のベクトル化されたソリューションを使用する方法はありますか?

たとえば、単一のフィット オブジェクトを次のように評価できます。

fitArray{1,1}(400)

しかし、私がやりたいのは、次のような方法で一度に複数のフィット オブジェクトを評価することです。

fitArray{1:1000}(400)

Matlab でのループは常に非常に遅く、この場合、複数の値でそれぞれの適合を評価する必要があるため、非常に遅くなります。

ループせずにそれを行う方法はありますか?

4

2 に答える 2

0

ここでは、ループは最大の問題ではありません。たとえば、fitoptions の速度を見てください...メモリ割り当てがひどいので、ループ自体の前にすべての操作を実行してみてください (fitoptions、fittype など...)。多項式フィッティングを使用していて、cfit 構造が必要ない場合は、代わりに polyfit を試してください。かなり高速になるはずです。

于 2013-02-14T19:08:24.570 に答える
0

私は自分で答えを見つけました。結局のところ、それは非常に単純でした。これを行うことで、私が望んでいた結果を達成しました:

vals = repmat({values}, size(fitArray));
evals = cellfun(@feval, fitArray, vals);

これは、セル配列内の各近似オブジェクトを、vals 配列内の対応する行の値で評価します。その結果、evals 配列には各 fit オブジェクトの結果のみが含まれます。

于 2013-02-15T11:29:06.073 に答える