【发布时间】:2019-11-07 09:46:07
【问题描述】:
我有一个数据集,其中包含来自按下按钮的信号。现在,在数据涵盖的整个时间段内,也存在噪音。数据本身只是一个向量,其中包含对应于正弦函数线性组合的数字。
我想隔离按下按钮的部分。所以我首先想到对噪声使用一定的阈值。噪声永远不会高于0.4,因此这将是一个很好的阈值。所以我的计划是创建新的向量,每个向量都包含按下单个按钮的时间段的数据,但我不知道如何做到这一点。
我认为我需要在向量上运行的代码来检查是否超过了 0.4 的阈值,然后将数据存储到新向量中,直到至少 x 许多条目再次低于阈值。
这个想法行得通吗?而且我不知道如何开始这项检查,感谢任何帮助。
仅供参考:最后我想使用fft提取正弦函数,但不使用signal processing toolbox。
编辑
我现在创建了(部分)工作代码:
z= [0 0.1 0.4 0.2 0.8 0.3 0.6 0.3 0.3 0.2 0.1 0.2 0.0 0.3 0.4 0.5 0.6 0.3 0.3 0.2 0.1 0.0];
zN = length(z);
y=[;];
m=0;
j=0;
i=1;
while i < zN
if z(i) >= 0.4
m=m+1;
k=0;
for j = i:zN
k=k+1;
y(m,k) = z(j);
if z(j) <0.4 && z(j+1)<0.4 && z(j+2)<0.4
i=i+j+3;
break
end
end
end
i=i+1;
end
正如希望的那样,这会返回一个矩阵y=[0.4 0.2 0.8 0.3 0.6 0.3; 0.4 0.5 0.6 0.3 0 0]。但是,对我来说,这看起来很丑陋,可读性也不是很好。此外,我现在手动指定接下来的三个条目应低于0.4,但我想通过一个变量来管理它,这样我就可以轻松地将逻辑分配为接下来的三十个条目,而不是三个。此外,这创建了正确的向量,但它不会继续运行代码并创建新向量。
【问题讨论】:
标签: matlab signals signal-processing fft