在Matlab中计算向量中包含少于3个连续零的元素

Bowecho

例如,我有以下向量:

A = [34 35 36 0 78 79 0 0 0 80 81 82 84 85 86 102 0 0 0 103 104 105 106 0 0 107 201 0 202 203 204];

A中的每个元素每秒代表一个值。我想计算A中包含少于3个连续零的元素=>我将获得以秒为单位的持续时间值。

在这种情况下,计数在每三个连续的零之前停止,并在三个连续的零之后重新开始,依此类推。就像这样:

A = [34->1s 35->2s 36->3s 0->4s 78->5s 79->6s stop 80->1s 81->2s 82->3s 84->4s 85->5s 86->6s 102->7s stop 103->1s 104->2s 105->3s 106->4s 0->5s 0->6s 107->7s 201->8s 0->9s 202->10s 203->11s 204->12s];

结果如下:

Duration = [6 7 12]; in seconds

有人知道吗?

路易斯·门多

您可以转换A为字符,'0''1'(例如)根据原始值是零还是非零进行转换,使用strsplit并获取每个子字符串的元素数。

N = 3要分割的零数。然后:

Duration = cellfun(@numel, strsplit(char((A>0)+'0'), repmat('0',1,N)));

请注意,上面的代码基于精确的N进行拆分例如,A = [1 2 3 0 0 0 0 4 5]给定Duration = [3 3],因为第四个零被分配给第二个子字符串。

如果要基于零个N或多个进行拆分,请使用正则表达式:

Duration = cellfun(@numel, regexp(char((A>0)+'0'), [repmat('0',1,N) '+'], 'split'));

对于A = [1 2 3 0 0 0 0 4 5]这给Duration = [3 2]

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算向量中的值少于另一个向量中的每个元素

从r中也有零频率的向量中计数元素

使用向量化函数计算向量中最大连续零个数

计算相同长度向量中的连续元素

如何在Java中计算整数的尾随零?(例如:234000 => 3个零)

函数计算具有 10 个元素的向量的 9 个总和(“连续元素”)

计算向量中连续对的数量

计算向量中的前导零

计算重复中向量中的相邻元素-MATLAB

在 C++ 中计算属于两个向量的元素数

如何删除数据框中连续日期值少于3个的行

na.approx 仅当列中少于 3 个连续 NA 时

如何在python 3中计算字符串中的连续子字符串

在Unity3D中计算两个向量之间的实际角度

计算在Python 3中包含3个常见元素的子列表的数量

如果向量包含5个元素中的3个,则在dplyr中返回该ID == TRUE的全部

计算列表中的连续元素

计算熊猫行中的连续零

在MATLAB中计算Python数值向量的平均值

计算向量中连续出现的次数

MATLAB-获取向量中的每N个元素

在MATLAB中对向量的前N个元素进行排序

在Matlab中从向量中删除前导零

从pandas DataFrame中删除少于K个连续的NaN

分配错误“ B和I中的元素数必须相同”。试图在Matlab中计算质心时

在MATLAB中计算单个图像中的SNR

如何查找和删除R data.frame中包含多于k个连续零的列?

如何过滤列中包含少于 3 个空格的行?(右)

R - 计算向量中的元素