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图,该方法需要适用于自变量的 100 种可能值。问题不在于绘制误差线,而在于如何创建向量对[mean(u(find(v==0.5)), mean(u(find(v==1)), mean(u(find(v==2))]。除了 sort 之外,是否有一种标准的自动化方式来执行此操作v,然后选择 sorted 的值并找到与这些值匹配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 回答