Я написал функцию в MATLAB для подсчета числа пересечений нуля, заданных вектором данных сигнала. Если я нахожу пересечение нуля, я также проверяю, является ли абсолютная разница между задействованными двумя векторными индексами больше порогового значения - это попытка уменьшить влияние шума сигнала.В MATLAB найдите нулевые пересечения в пределах порогового значения, заданного вектором данных
zc = [];
thresh = 2;
for i = 1:length(v)-1
if ((v(i)>0 && v(i+1)<0) || (v(i)<0 && v(i+1)>0)) && abs(v(i)-v(i+1)) >= thresh
zc = [zc; i+1];
end
end
zcCount = length(zc);
Я использовал вектор из функции переходов через нуль здесь, чтобы проверить: http://hips.seas.harvard.edu/content/count-zero-crossings-matlab
A = [-0.49840598306643,
1.04975509964655,
-1.67055867973620,
-2.01437026154355,
0.98661592496732,
-0.06048256273708,
1.19294080740269,
2.68558025885591,
0.85373360483580,
1.00554850567375];
Это, кажется, работает нормально, но есть более эффективный способ достижения того же результата? Например. на веб-странице выше, они просто использовать следующую строку для расчета переходов через нуль:
z=find(diff(v>0)~=0)+1;
Есть ли способ включить пороговую проверку в чем-то подобным эффективным?
Вы должны смотреть на все «найти пересечения нуля» вопросы, связанные там ----> –