假设我有一个自变量值的向量
v =[ 1 2 2 1 1 .5 1 2 .5 .5 1]
和响应变量的向量
u = [ 5 22 20 4 8 .2 5 12 0 .5 6]
我想使用错误栏绘制u
与v
的关系,该方法需要为自变量的100个可能值工作。问题不在于绘制误差线,而是如何创建矢量对[mean(u(find(v==0.5)), mean(u(find(v==1)), mean(u(find(v==2))]
。除了排序v
之外,是否有标准的自动执行方式,然后挑选排序v
的值并找到v
的索引,其中v
与这些值匹配?这似乎非常低效。
答案 0 :(得分: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
是行向量。