예제: 디지털 필터의 시간 반응
response 및
fftfilt 함수를 사용하여 컨볼루션을 직접 계산한 FIR 또는 IIR 필터의 출력을 계산합니다. 이 함수는 길이 n인 복소 출력 벡터를 구합니다.
이 함수에 사용된 기법은 대부분의 신호 가공 관련 교과서에 잘 정립 및 설명되어 있습니다. 예를 들어 A.V. Oppenheim 및 R. W. Schafer의 Discrete-Time Signal Processing(1989년)에서 556-558페이지를 참조하십시오.
저역 통과 IIR 필터 차수
1. 저역 주파수 및 고역 주파수 컴포넌트가 있는 입력 신호를 정의합니다.
2. 차단 주파수 f를 사용하여 2차 저역 통과 버터워스 필터의 응답 중 첫 100개 단계를 계산합니다.
함수 설명에 지정된 것처럼 차단 범위는 0에서 0.5 사이여야 합니다.
3.
iirlow 함수를 사용하여 전달 함수 계수를 구합니다.
4. response 함수를 사용하여 필터의 응답을 구합니다.
원래 신호 x와 비교하면, 응답 신호 YA가 훨씬 부드럽고 진폭이 작으며 시간 편이가 적습니다.
5. 같은 차단 주파수 f를 사용하는 6차 저역 통과 버터워스 필터를 지정합니다. response 함수는 첫 번째 섹션의 출력을 두 번째 섹션의 입력으로 사용하고 그 결과를 세 번째 섹션의 출력으로 사용하는 방식으로 작동합니다.
차수가 높은 필터는 더 부드러운 응답을 제공하고, 고역 주파수 필터링에 훨씬 효율적이고, 더 큰 시간 편이를 발생시키고, 더 가파른 차단 주파수 변환을 제공합니다.
대역 통과 FIR 필터
1. 위에서 정의한 두 신호 주파수의 고역을 전송하는 FIR 대역 통과 필터 F를 설계합니다.
2. 위 저역 및 고역 주파수 사이의 통과 대역을 포함하며 블랙맨 테이퍼(마지막 인수 6)를 사용하여, 길이 51 대역 통과 필터에 대한 계수를 계산합니다.
3. 필터로 인해 발생한 지연을 계산합니다.
4. response 함수를 적용하여 첫 번째 100개 단계를 계산합니다.
이 필터는 초기화 즉시 신호를 전송하지는 않지만 고역 주파수(f2=0.2, T=5)를 매우 정확하게 선택합니다.
대역 통과 FIR 필터 2
다음 저역 통과 FIR 필터가 통과 대역의 여러 주파수에서 0 위상 편이를 갖는다는 것을 보여줍니다.
1. 두 입력 신호를 정의합니다.
2. FIR 필터 차단 주파수와 계수 수를 정의합니다.
3. 해닝 창함수로 테이퍼된 계수를 계산합니다.
4. 필터로 인해 발생한 지연을 계산합니다.
5. 두 지연 입력 신호를 정의합니다.
6. 첫 번째 지연 입력 신호 x1d 및 x1에 대한 필터의 응답을 도표화합니다.
두 신호는 동일하고 위상 편이는 0입니다.
7. 두 번째 지연 입력 신호 x2d 및 x2에 대한 필터의 응답을 도표화합니다.
두 신호는 동일하고 위상 편이는 0입니다.
컨볼루션에 대한 응답 사용
필터 배열에 열이 하나이면 response 함수가 컨볼루션을 수행합니다. 이 함수를 FFT 기반 함수
convolve 대신 사용할 수 있습니다. 두 긴 시퀀스의 컨볼루션에서 소규모 초기 부분에 대해서는 이 함수의 응답이 훨씬 빠릅니다.
1. 범위를 정의하고 0부터 1 사이의 양의 난수로 채워진 두 배열을 정의합니다.
2. convolve 함수를 두 배열에 적용합니다.
3. response 함수를 사용하여 응답의 첫 8개 단계를 구합니다.
두 배열이 동일합니다.
Response 및 fftfilt 함수의 출력 비교
response 및 fftfilt 함수에서 얻은 결과가 동일하다는 것을 보여줍니다.
1. 범위와 두 주파수를 정의합니다.
2. f1 및 f2의 항으로 입력 신호를 정의합니다.
3. 차단 주파수 f를 포함하고 해닝 창함수로 테이퍼된 FIR 저역 통과 필터를 생성합니다.
4. 입력 신호에 대한 필터 응답을 계산합니다.
5. fftfilt 함수를 입력 신호에 적용하고 첫 번째 64개 단계를 계산합니다.
6. 입력 신호를 필터의 전달 함수와 컨볼루션한 결과를 응답 신호와 함께 도표화합니다. 두 그래프선이 완전히 겹칩니다.