题目描述
matlab编程小白一枚 请求各位大神给个思路 用matlab编程造一个过滤器过滤数据里的条目
题目来源及自己的思路
手头上有一份原始数据 没有标签只有数字那种 其中的第二列是心跳
现在需要把心跳检测为0的条目过滤掉
之前都是撸的别的语言 完全没思路。。。
老板给的思路是提取increment
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
部分数据:(没有标签 没有标签 只有数字 第二列是心跳)
0.00 0 -1 -1 -127 -1 -1 52 -1
0.25 0 -1 -1 -127 -1 -1 52 -1
0.50 0 -1 -1 -127 -1 -1 51 -1
0.75 0 -1 -1 -127 -1 -1 51 -1
1.00 0 -1 -1 -127 -1 -1 50 -1
1.25 0 -1 -1 -127 -1 -1 50 -1
1.50 0 -1 -1 -127 -1 -1 50 -1
1.75 0 -1 -1 -127 -1 -1 52 -1
2.00 0 -1 -1 -127 -1 -1 52 -1
2.25 0 -1 -1 -127 -1 -1 54 -1
2.50 0 -1 -1 -127 -1 -1 53 -1
2.75 133 -1 -1 -127 -1 -1 54 -1
3.00 133 -1 -1 -127 -1 -1 56 -1
3.25 130 -1 -1 -127 -1 -1 54 -1
3.50 130 -1 -1 -127 -1 -1 56 -1
3.75 126 -1 -1 -127 -1 -1 57 -1
4.00 126 -1 -1 -127 -1 -1 56 -1
4.25 121 -1 -1 -127 -1 -1 56 -1
4.50 121 -1 -1 -127 -1 -1 56 -1
4.75 120 -1 -1 -127 -1 -1 52 -1
你期待的结果是什么?实际看到的错误信息又是什么?
过滤条件:
1.检测到一条数据心跳为0时, 如果从这条开始计算,后续累计的0的条目数小于等于20, 批量删除掉这些条目;
2.如果后续累计的0的条目大于20小于80, 计算平均数:(起始0条目之前的非0条目+累计0条目结束后第一条非0条目)/2
然后把算出的平均数安到这些条目里去
有点复杂 求一个思路和相关命令关键词 跪谢
如果你的数据库是
M
,即最直接的思路是用一个简单粗暴的
for
循环:for
循环很好理解,也很好写,但是运行效率不高,特别是当你的数据量较大时。这时候,我们可以用另一种方法,创建一个0和1组成的过滤器(实质上是一个
logical array
),然后用find
和diff
对过滤器处理。