【发布时间】:2013-09-08 13:02:47
【问题描述】:
在 Matlab 中,我有一个看起来像这样的向量:
0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1
我现在要做的是计算这个向量中 1 的个数。连续的 1 算作 1。此外,我还想计算 1 之间 0 的平均数和中位数。所以对于这个例子:
1 秒:5
中位数 0:3.5
平均 0:3
我使用蛮力方法解决了这个问题,即循环调查每个元素并检查前一个元素和下一个元素。但我确信必须有一个更快的解决方案。有什么想法吗?
【问题讨论】:
-
您能告诉我这里的平均数和中位数是如何计算的吗?我有一个连续 1 的解决方案
-
计数应该像这样工作:vector*[1;1-vector(1:end-1)']。如果向量是布尔值,则可能必须将向量转换为“double”。不幸的是,这并不能解决中间零的平均数量问题。
-
@P0W 在第一个 1 之后有 3 次 0,然后在下一个连续 1 块之后有 4 次 0,然后是 4,然后是 1。所以我计算序列的平均值和中位数 3 4 4 1.
-
@ElianT 只计算 个之间的零
标签: matlab