주요 콘텐츠

filter 함수

filter는 전치된 Direct Form II 구조로 구현됩니다. 여기서 n–1은 필터 차수입니다. 이 필터는 지연 요소가 가장 적게 구현된 표준형 필터입니다.

샘플이 m개인 경우, filter는 차분 방정식을 다음과 같이 계산합니다.

y(m)=b(1)x(m)+z1(m1)z1(m)=b(2)x(m)+z2(m1)a(2)y(m)=zn2(m)=b(n1)x(m)+zn1(m1)a(n1)y(m)zn1(m)=b(n)x(m)a(n)y(m)

가장 기본적인 형식의 filter는 지연 출력값 zi(1), i = 1, ..., n-1을 0으로 초기화합니다. 이는 이전 입력값과 출력값을 모두 0으로 가정하는 것과 동일합니다. filter에 대한 네 번째 입력 파라미터를 사용하여 초기 지연 출력값을 설정하거나 두 번째 출력 파라미터를 사용하여 최종 지연 출력값을 확인할 수 있습니다.

[y,zf] = filter(b,a,x,zi)

특히 메모리 제한을 고려해야 한다면, 초기 조건과 최종 조건을 확인하는 것이 각 부분의 데이터를 필터링하는 데 유용합니다. 각각 5000개 점이 있는 두 부분에서 데이터를 수집했다고 가정하겠습니다.

x1 = randn(5000,1);  % Generate two random data sequences.
x2 = randn(5000,1); 

첫 번째 시퀀스 x1은 처음 10분 동안의 데이터에 대응하고 두 번째 시퀀스 x2는 추가 10분 동안의 데이터에 대응할 수 있습니다. 전체 시퀀스는 x = [x1;x2]입니다. 결합된 시퀀스를 유지할 수 있는 충분한 메모리가 없을 경우 시퀀스 x1x2를 한 번에 하나씩 필터링하십시오. 필터링된 시퀀스의 연속성을 보장하려면 x1의 최종 조건을 초기 조건으로 사용하여 x2를 필터링하십시오.

[y1,zf] = filter(b,a,x1);
y2 = filter(b,a,x2,zf);

filtic 함수는 filter에 대한 초기 조건을 생성합니다. filtic는 필터의 동작이 사용자가 지정하는 이전 입력값과 출력값을 반영하도록 지연 벡터를 계산합니다. filtic를 사용하여 위와 동일한 출력 지연 값 zf를 구하려면 다음을 사용하십시오.

zf = filtic(b,a,flipud(y1),flipud(x1));

적절한 초기 조건은 과도(Transient) 시작 효과를 줄이는 데 도움이 되므로 이는 짧은 데이터 시퀀스를 필터링할 때 유용할 수 있습니다.