Info
此问题已关闭。 请重新打开它进行编辑或回答。
Data not being filtered out by threshold
1 次查看(过去 30 天)
显示 更早的评论
I am trying to create touch down and take off events on my centre of pressure data, however the threshold I have created seems to consistently come in one frame too early.
The threshold is allowing data below (-0.51) the set value (<2) through. Even when the threshold is increased this is happening. So i am constantly left with a negative value as first touch down before the actual touch down occurs one frame later.
This is the code i am using to create the events:
Air = zeros(length(mm3),1);
for n = 1:length(mm3)
if mm3(n,2) < 2
Air(n,1) = 1;
end
end
Edges = diff(Air); % Steigung kennzeichnet aufsteigende und abfallende Kante
TOPressure = find(Edges==1); % Absprungzeitpunkte
TDPressure = find(Edges==-1);
plot(mm3(:,2))
TOPressure = TOPressure(5:55,1);
TDPressure = TDPressure(5:55,1);
TOPressure = TOPressure(2:47,1);
TDPressure = TDPressure(1:46,1);
2 个评论
Jan
2017-5-10
I do not see a relation between the description and the code. The code does not contain any threshold. What does "seems to come one frame too early" exactly mean? Which variable is concerned?
By the way: You can create Air directly without pre-allocation and a loop:
Air = double(mm3(:, 2) < 2);
回答(1 个)
Santhana Raj
2017-5-11
If you see the help of diff, it says: diff(X), for a vector X, is [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)].
So, in your case, 80th element of Air is actually 1. And when you use diff, 79th element of TOPressure is Air(80)-Air(79), (which is actually the edge).
2 个评论
Santhana Raj
2017-5-22
Yes. It looks so.
Easiest way out would be to add 1 to the result of find. another way is to adjust the result of diff by one position.
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!