matlab octave filter 手習い
計測データ(変位)から速度を求める場合、微分は離散なのでエッジがでる。それをフィルターで滑らかにする方法
clc; load('test.mat'); counter=0; %データの前処理 for i=2:size(Time,1) if X(i) > X(i-1) counter=counter+1; Xsum(i,1)=2*pi-X(i)+counter*2*pi; else Xsum(i,1)=2*pi-X(i)+counter*2*pi; end end plot(Time,Xsum);grid %速度を計算 dX=[diff(Xsum)./SamplingRate;0];dX(1)=0; %plot(Time,dX);grid %fft %ここからがフィルター処理 fftdX=fft(dX); for i=1:size(fftdX) %ゲインの小さい(ノイズと思わしき)部分を落とす if abs(fftdX(i)) <= 50 fftdX(i)=0; end end %plot([1:2803],abs(fftdX)) %inverse fft filterddX=real(ifft(fftdX)); plot(Time,filterddX,Time,dX);grid %加速度を計算 ddX=[diff(filterddX)./SamplingRate;0]; plot(Time,ddX);grid
周波数帯で落とすやり方は想像できるんだけれど、数学的にまだ僕が理解しきれてない。とりあえずここまで