본문 바로가기

delphi

HPF & LPF

반응형
SMALL

가속도센서는 HPF를 사용하고 기울기 센서는 LFP를 사용한다.

1. HPF

procedure HighPassFilter(var input, output: TArray<Double>; const freq, fs: Double);
var
  i: Integer;
  RC, dt, alpha, y1: Double;
begin
  // Calculate filter constants
  RC := 1 / (2 * PI * freq);
  dt := 1 / fs;
  alpha := RC / (RC + dt);

  // Apply filter to input signal
  y1 := input[0];
  for i := 1 to High(input) do
  begin
    output[i] := alpha * (output[i-1] + input[i] - input[i-1]);
    output[i] := output[i-1] + (input[i] - input[i-1]) - alpha * (output[i-1] - y1);
    y1 := output[i-1];
  end;
end;

이 함수는 입력 신호(double 배열), 주파수 컷오프 값 및 샘플 속도(Hz)를 입력으로 사용하고 입력 신호에 고역 통과 필터를 적용합니다. 필터링된 신호는 출력 매개변수(입력 신호와 동일한 크기로 미리 할당되어야 함)에 반환됩니다. 이 함수는 표준 1차 고역 통과 필터 공식을 사용하며 시간 상수는 RC이고 스무딩 계수는 알파입니다.

 

2. LPF

procedure LowPassFilter(var input, output: TArray<Double>; const freq, fs: Double);
var
  i: Integer;
  RC, dt, alpha: Double;
begin
  // Calculate filter constants
  RC := 1 / (2 * PI * freq);
  dt := 1 / fs;
  alpha := dt / (RC + dt);

  // Apply filter to input signal
  output[0] := input[0];
  for i := 1 to High(input) do
  begin
    output[i] := alpha * input[i] + (1 - alpha) * output[i-1];
  end;
end;

이 함수는 입력 신호(double 배열), 주파수 컷오프 값 및 샘플 속도(Hz)를 입력으로 사용하고 입력 신호에 저역 통과 필터를 적용합니다. 필터링된 신호는 출력 매개변수(입력 신호와 동일한 크기로 미리 할당되어야 함)에 반환됩니다. 이 함수는 표준 1차 저역 통과 필터 공식을 사용하며 시간 상수는 RC이고 스무딩 계수는 알파입니다.

반응형
LIST