【发布时间】:2018-03-24 14:56:56
【问题描述】:
给定一个数组 V,它是一个微分方程组的数值解,我想确定这个数组的局部正峰值。每次我有一个值大于 0 的峰值时,我都会将其编码为 1,每次我有一个负值的峰值时,我都会将其编码为 0(我不能使用 findpeaks)。
我尝试了以下方法:
function Suite_bits = message_digital(V)
j = 1;
bit(1) = 0;
for i=2:numel(V)-1
if V(i-1)<V(i) && V(i+1)<V(i)
if V(i)>0
bit(j) = 1;
j = j + 1;
else
bit(j) = 0;
j = j + 1;
end
end
Suite_bits = bit;
end
但是由于向量 V 中的一些小异常,步骤之间的值波动(记住 V 是步长 h = 0.1 的数值求解 ode 系统的解),我得到的峰值比图中实际出现的峰值要多.有什么想法可以解决这个问题吗?
【问题讨论】:
-
您可能会发现以下内容很有用。 stackoverflow.com/questions/22583391/…
标签: arrays algorithm matlab signal-processing