【问题标题】:plotting two with multiple values of Y for each X为每个 X 绘制两个具有多个 Y 值的图
【发布时间】:2015-06-01 16:40:19
【问题描述】:
A = [4180,4180,4200,4200,4200,4330,...]
B = [94, 180, 120, 150, 110, 160 ...]

我有 2 个数组。

按值排序,每个单元格包含可能相等的值。

B 如上图所示。

我想绘制 A 与 B,但由于 A 的每个元素都有多个值,所以情节非常难看。

有没有办法让A的每个值只保留一个单元格,同时取B中相应单元格的平均值?

例如:

A1 = [4180,4200,4330,...]
B1 = [mean(94,180),mean(120,150,110),...]

【问题讨论】:

  • 你怎么知道每个A元素都有23元素对应B ??
  • 每个数组都是结构的一个字段。我有一个 1x81 结构,A 和 B 是该结构中的字段。我的结构中有 81 个单元格,每个单元格都有一个 A 和一个 B。

标签: arrays matlab plot cells


【解决方案1】:

一种方法 -

[A1,~,idx] = unique(A,'stable')
B1 = accumarray(idx,B,[],@mean).'

更快的替代方案 -

B1 = (accumarray(idx, B)./accumarray(idx,1)).'

或者-

B1 = (accumarray(idx, B)./histc(idx,1:max(idx))).'

示例运行

输入 -

>> A,B
A =
        4180        4180        4200        4200        4200        4330
B =
    94   180   120   150   110   160

输出 -

>> A1,B1
A1 =
        4180        4200        4330
B1 =
          137       126.67          160

【讨论】:

  • 废话...我正准备用accumarray 写一个答案,哈哈。 +1。
  • @rayryeng 哈哈,我猜很巧,特别是简单的 ;)
  • 非常感谢大家
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多