1

独立変数値のベクトルがあるとします

v =[ 1 2 2 1 1 .5 1 2 .5 .5 1]

および応答変数のベクトル

u = [ 5 22 20 4 8 .2 5 12 0 .5 6]

エラーバーを使用してプロットしたいのですが、この方法は、独立変数の数百の可能な値に対して機能する必要がありますuv問題はエラー バーをプロットすることではなく、ベクトル ペアを作成する方法にあります[mean(u(find(v==0.5)), mean(u(find(v==1)), mean(u(find(v==2))]。sorting 以外にこれを行う標準的な自動化された方法はありますか? vsorted の値を選択し、それらの値と一致する場所vのインデックスを見つけますか? これは非常に非効率に思えます。vv

4

1 に答える 1

1

vの一意の値が に表示される順序での各一意の値の平均を取得する場合は、次のようになりvます。

>> [unv,iunv,iv] = unique(v);
>> umeans = accumarray(iv(:),u,[],@mean);
>> [~,ivorder] = sort(iunv);
>> umeans = umeans(ivorder)

umeans =

    5.6000
   18.0000
    0.2333

の並べ替えられた値の順序で平均が必要な場合は、並べ替えコマンドを使用せずにvの出力を使用します。accumarray

>> [unv,iunv,iv] = unique(v);
>> umeans = accumarray(iv(:),u,[],@mean)

umeans =

    0.2333
    5.6000
   18.0000

uそれが行ベクトルであることを確認してください。

于 2013-11-09T20:16:55.830 に答える