For循环以平均各个时间点Matlab

马琳·西迪基(Maheen Siddiqui)

我在Matlab中有一个21x2的矢量,看起来像这样:

A = [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5;
     0   0   0   0   0   1   1   1   1   1   1   0   0   0   0   0   1   1   1   1   1]'; 

第一行中的每个元素都对应于a01第二行中的元素我需要治疗的组中的每一个0's1's块作为这样我可以挑出元件,使得我有包含所有的向量第一所述的元件1块,然后包含所有另一个向量第二所述的元件1块,以此类推,直到我把所有要素都分开了。

因此,例如vector1=[1.0 2.1]vector2=[1.1 2.2]等等。

这是因为我需要对块之间的各个点求平均值,以便获得例如avg_vector1,avg_vector2,avg_vector3等。

到目前为止,我一直在尝试编写一个循环来完成此操作,但我已经知道它不会那么有效,并且每次都可能无法正常工作,因为我必须if为每个j变量都设置一个(见下文),并且“ “ j's”不是真正固定的,有时块可能会更长,有时可能会更短。

j=1;
for i=1:size(A,1)
 if A(i,2)==1
    if j==1 
        vector1(i)=A(i,1);
        j=j+1; %j is acting as a counter for the "size" of the block of 0's and 1's
    if j==2
        vector2(i)=A(i,1);
    **incomplete**

有人知道如何更优雅,更简单地执行此操作吗?

谢谢

单人

(希望)正确的版本:

M = logical(A(:, 2));
is_start = [M(1); ~M(1:end-1) & M(2:end)];
is_start = is_start(M); 
A_valid = A(M, 1);
group_idx = cumsum(is_start); 
group_start_idx = find(is_start);
sub_idx = (1:numel(is_start))' - group_start_idx(group_idx)+1;
means = accumarray(sub_idx, A_valid, [], @mean);

可能有一种稍微整洁的方法,只需减少一两个步骤即可,但这应该可行。

上课:cumsum经常使用

[原始错误答案已删除]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算平均时间

来自分类Dev

Rails:平均时间

来自分类Dev

日期时间列表的平均时间

来自分类Dev

matlab / freemat-在图表上找到两点之间的时间

来自分类Dev

如何操纵TPath中的各个点?

来自分类Dev

对熊猫的各个群体进行平均

来自分类Dev

在Matlab中调试各个部分

来自分类Dev

如何计算平均周转时间-循环和FIFO调度?

来自分类Dev

在MATLAB中给定持续时间值的时间步长之间计算平均值

来自分类Dev

移动平均函数matlab(不使用for循环)

来自分类Dev

时间循环不循环

来自分类Dev

结构中各个矩阵的平均值

来自分类Dev

For循环以平均各个时间点Matlab

来自分类Dev

基于时间的点间平均值

来自分类Dev

PromQL平均vs平均时间

来自分类Dev

在Matlab中计算时间平均数据

来自分类Dev

日期时间列表的平均时间

来自分类Dev

循环合并各个表中的点

来自分类Dev

无法计算平均时间

来自分类Dev

在Matlab中从2个矩阵绘制图并标记各个点

来自分类Dev

MYSQL平均日期时间

来自分类Dev

Matlab计算for循环中分布分位数的平均值

来自分类Dev

在Java中平均For循环迭代的时间

来自分类Dev

在MATLAB中计算时间序列数据的每周(或每月)平均值

来自分类Dev

for 循环比 numpy 平均速度快,结果也有点不同

来自分类Dev

嵌套循环的平均时间复杂度

来自分类Dev

MATLAB:在串行时间内每 5 分钟计算一次平均值

来自分类Dev

上升时间循环问题:Matlab

来自分类Dev

如何计算肯定会在某个点结束的无限循环的时间复杂度?