【发布时间】:2013-10-23 23:00:04
【问题描述】:
这是我的示例数据:
Arr StarP:
2141865 16
2141865 17
2141865 17
2141865 16
2141865 17
2141865 20
2141865 9
2141865 7
2141865 19
2141865 18
2141865 19
2141865 9
2141865 9
2141865 9
2141865 9
Arr medians:
2141865 16
目标是将 Arr StarP 与 Arr 中位数进行比较,并找出 Arr StarP 中具有相应 ID (2141865) 的任何值是否在 Arr 中位数中该 ID 的值的某个范围内(如果大于 1.5* 或1.5* 更小),如果不是,则需要乘以或除以 1.5。如果 Arr StarP 的值比 Arr 中位数大或小 2*,那么我希望在新的平均值计算中忽略该值。
示例输出:
2141865 14.00666667
附: Arr B 的实际大小是 198x2,Arr A 是 45879x2,Arr A 中有许多不同的 ID,而 Arr B 正好有 198,Arr B 是通过找到 Arr A 中所有值的中位数与匹配 ID 得出的并输出该中位数和 ID。
【问题讨论】:
-
我尝试过使用 accumarray 和 ismember 但由于我不太习惯 matlab 我不明白用什么方法来解决这个问题,我也尝试了带有嵌套 if 语句的循环但不匹配由于文件的格式,索引正确。
-
请提供一个可复制粘贴的示例,其中
B也有意义。 -
编辑显示了我到目前为止的所有内容以及中位数是如何从 StarP 派生的,ismember 是我尝试开始循环但我不知道如何处理它。
-
@ImmortalxR 请同时添加一个 ArrB 和一个手工制作的示例输出
-
@Dan 我不太明白你对 Arr B(中位数)还有什么要求,这正是它的样子。我还刚刚添加了示例输出。