2013-11-09 27 views
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與errorbars,該方法需要爲數百工作自變量的可能值。問題不在於繪製誤差線,而在於如何創建向量對[mean(u(find(v==0.5)), mean(u(find(v==1)), mean(u(find(v==2))]。除排序v之外,是否有標準的自動化方式來執行此操作,然後挑選排序的v的值並找到v的索引,其中v與那些值匹配?這看起來效率很低。

回答

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是一個行向量。

+0

感謝一堆,我不知道獨特的功能。謝謝你讓我知道。 – MHH

+0

@ user1544793:很高興提供幫助。出於好奇,你想要第一個方法嗎? – chappjc

+0

這並不重要,只要配對一致,繪圖功能就不會關心排序。雖然排序的方式可能對其他應用程序更清潔。 – MHH