필자는 테스트 가속도계 데이터를 가지고 있으며 속도와 위치를 찾기 위해 Matlab을 사용해야합니다. 속도와 위치 모두에 대한 실제 데이터 포인트가 필요합니다. 그러나 곡선 아래의 누적 영역이 아닙니다. 필자는 샘플 코드를 사용하여 매우 길고 구체적인 벡터화 코딩을 통해이를 수행 할 수 있었지만 좀 더 일반적인 방법을 찾아야합니다. 나는 이산적인 데이터를 가지고 있으며 어떤 오류도 가질 여유가 없기 때문에 단지 곡선 적합성을 사용하고 면적을 추정 할 수 없다. 근본적으로 각 사각형의 면적을 계산하는이 방법이 가장 정확한 방법입니다. 지금까지 아래에있는 내 시도가 있습니다Matlab을 사용하여 가속도계 데이터를 속도와 위치로 통합
%Variables
clear
DeltaTime=0.2; %10 Hz sampling rate
Acceleration=[0, 1, 2, 4, 3, 1, 2]; %Sample random data set
TTime=(0.2:DeltaTime:1.4);
VelocityL=zeros(size(Acceleration));
VelocityLL=zeros(size(Acceleration));
%Velocity
DeltaVelocityVect=Acceleration*DeltaTime;
VelocityV=[sum(DeltaVelocityVect(1)),sum(DeltaVelocityVect(1:2)),...
sum(DeltaVelocityVect(1:3)), sum(DeltaVelocityVect(1:4)), sum(DeltaVelocityVect(1:5))...
sum(DeltaVelocityVect(1:6)), sum(DeltaVelocityVect(1:7))];
%Position
DeltaPositionVect=VelocityV*DeltaTime;
PositionV=[sum(DeltaPositionVect(1)),sum(DeltaPositionVect(1:2)),...
sum(DeltaPositionVect(1:3)), sum(DeltaPositionVect(1:4)), sum(DeltaPositionVect(1:5))...
sum(DeltaPositionVect(1:6)), sum(DeltaPositionVect(1:7))];
내가 모든 손으로이 문제를 해결 종이와 MATLAB과 위의 작품에 모두를 그래프로했다. 데이터 세트의 길이는 다양하지만 장기간에는 작동하지 않습니다. 샘플링 속도를 유지하면서 인덱스의 벡터 길이에 맞게 쉽게 변경할 수 있기 때문에이 문제를 해결하기 위해 루핑을 사용하려고했지만 실제 데이터 포인트를 출력 할 수 없었습니다. 위의 일반적인 형식이 필요합니다.
for index=1:length(Acceleration);
DeltaVelocityLoop(index)= DeltaTime*Acceleration(index);
end
for index2=1:7
VelocityL(index2)= sum(DeltaVelocityLoop(index2));
VelocityLL=VelocityLL+DeltaVelocityLoop(index2);
end
이것은 제 10 번째 시도이므로 반복됩니다. VelocityL은 DeltaVelocityLoop과 동일한 벡터를 반환합니다 (이전 영역을 합산하지 않고 목표). VelocityLL은 단순히 벡터 가속의 길이로 작성된 곡선 아래의 총 면적을 반환합니다. 이 장애물을 피할 수있는 방법에 대한 아이디어가 있으면 알려 주시기 바랍니다.
실제 데이터 포인트가 필요하면 가속만으로는 충분하지 않습니다. 예를 들어 초기 위치와 초기 속도와 같은 2 개의 상수가 필요할 것입니다. 게다가 그러한 체계에서는 누적 된 오류가 있으므로 장기간에 걸쳐 통합하는 경우 신뢰할 수없는 결과가 발생할 수 있음을 명심하십시오. –