프로그래밍/매트랩

매트랩 시뮬링크 FIR 필터 설계

에이티에스 2023. 9. 1. 21:42
728x90

 

필터가 사용되는 이유 및 이점에 대해 간략하게 설명합니다. 처음에는 필터에 대한 간략하고 일반적인 소개가 제공되며 유한 임펄스 응답(FIR) 필터에 대해 구체적으로 설명합니다. 그런 다음 FIR 필터의 다양한 순서에 대해 설명합니다.

 

"예제와 함께 설명"의 하위 섹션에서 2차의 간단하고 포괄적인 FIR 필터가 설계되었습니다. 각 단계에 대한 적절한 설명이 필터의 결과와 함께 제공됩니다. 마지막에는 독자가 튜토리얼에서 제공하는 개념과 관련하여 스스로 할 수 있도록 간단하고 수행하기 쉬운 연습이 제공됩니다.

 

 

필터 소개

필터는 거의 모든 전기 엔지니어가 사용하는 매우 기본적인 구성 요소입니다. 이름에서 알 수 있듯이 필터는 입력에서 원치 않거나 잡음이 있는 구성 요소 및 기능을 필터링하는 데 사용됩니다. 일반적으로 필터에서 입력은 무엇이든 될 수 있지만 신호 처리에 대해 구체적으로 이야기할 때 입력은 전기 신호여야 합니다. 이제 필터를 재정의하는 것은 입력 신호에서 원치 않는 구성 요소나 노이즈를 제거하는 프로세스입니다. 다양한 유형의 신호가 있지만 여기서는 그 중 몇 가지만 설명합니다.

 

필터의 종류

필터는 다음과 같은 유형으로 분류할 수 있습니다.

  1. FIR Filters (Finite Impulse Response)
  2. IIR Filters(infinite impulse response filter)
  3. High-pass and Low-pass
  4. Band-pass
  5. Stop-band
  6. Notch
  7. Comb Filters
  8. All-pass

 

FIR 필터

유한 임펄스 응답 필터는 이름만으로도 쉽게 이해할 수 있습니다. 입력 임펄스에 대한 응답의 길이가 한정된 필터입니다. 간단히 말해서, FIR 필터는 아래 예에서 곧 볼 수 있듯이 임펄스에 대한 응답으로 유한한 기간 출력을 제공합니다. 

 

FIR 필터의 순서로 이동합니다. 필터의 차수는 전달 함수의 차수로 정의됩니다. N차 FIR 필터의 경우, 출력값은 첫 번째 N개의 입력 샘플에만 종속됩니다. 이 튜토리얼에서는 2차 FIR 필터를 설계합니다. FIR 필터의 일반적인 설계는 아래 그림에 나와 있습니다.

그림 1: FIR 필터 설계

 

Simulink Matlab에서 FIR 필터 설계하기

  • 이제 아래 방정식에 주어진 필터의 시스템을 사용하여 2차 FIR 필터를 설계해 보겠습니다.
  • 위에는 2차 필터가 주어져 있습니다. 우리는 이제 위의 식을 아래의 일반 방정식과 비교하여 계수 b0, b1, b2를 구하겠습니다.

b0 = 2, b1 = 1,b2 =2 

 

  • 이제 MATLAB의 simulink에서 이 필터를 설계해 보겠습니다. 먼저 MATLAB을 열고 이전 튜토리얼에서 했던 것처럼 simulink를 열고 간단한 FIR 필터를 설계하기 위해 빈 모델을 만듭니다. simulink의 라이브러리 브라우저를 열고 일반적으로 사용되는 블록에서 아래 그림과 같이 상수 블록을 선택합니다. 이 블록은 방정식의 계수 역할을 할 것입니다.
     

 

그림 2: 상수 블록

 

 
  • 다음으로 x[n-1] 및 x[n-2] 지연 샘플 역할을 하는 지연 블록이 필요합니다. 필터의 순서에 따라 필터 설계에 사용할 지연 블록의 수가 결정됩니다. 이 예에서 필터의 순서는 2이므로 지연 블록의 수입니다. 일반적으로 사용되는 블록 섹션에서 지연 블록을 선택하고 아래 그림과 같이 모델에 배치합니다.

그림 3: 지연 블록

 

  • 설계할 FIR 필터의 단계 수도 필터의 순서에 따라 달라집니다. 필터의 차수가 N인 경우 필터 설계에 사용되는 단계 수는 N+1이 됩니다. 이 경우 필터의 순서는 2이므로 단계는 3이 됩니다. 필터 단계가 끝나면 시스템 방정식에서 알 수 있듯이 모든 단계의 출력을 합산해야 합니다. 이 합산 프로세스에서는 합계 블록을 사용해야 합니다. simulink 라이브러리 브라우저의 수학 연산 섹션에서 sum 블록을 선택하고 아래 그림과 같이 모델에 추가합니다. 
  •  

그림 4: Sum 블록

 

  • 또한 각 단계의 계수에 지연된 입력을 곱하려면 일부 곱 블록을 사용해야 합니다. 라이브러리 브라우저의 수학 연산 섹션에서 Product 블록을 선택하고 아래 그림과 같이 모델에 배치합니다.

그림 5: 제품 블록

 

  • 다음 단계는 시스템의 응답을 올바르게보기 위해 입력 소스를 추가하는 것입니다. 여기서 사용할 입력 소스는 Repeating Sequence Stairs 입니다. 이 블록을 사용하는 목적은 충동을 생성하는 것입니다. simulink 라이브러리 브라우저의 소스 섹션에서 Repeating Sequence Stairs 블록을 선택하고 아래 그림과 같이 모델에 추가합니다.

 

그림 6: 입력 소스

 

 

  • 필터의 출력을 표시하려면 출력 측면을 따라 입력을 표시하는 일종의 오실로스코프도 필요합니다. 라이브러리 브라우저의 sinks 섹션에서 scope를 선택하고 아래 그림과 같이 모델에 추가합니다.

그림 7: 범위

 

 

  • 이제 필터의 디자인 부분으로 이동하기 위해 처음에 만든 모델로 이동해 보겠습니다. 이전에 논의했듯이 필터에는 세 단계가 있습니다. 우리는 각 단계를 단계별로 설계할 것입니다. 먼저 입력 소스를 왼쪽에 놓고 두 번 클릭하여 입력을 임펄스로 변경합니다. 매개 변수 블록에서 아래와 같이 입력 시퀀스를 추가합니다.

 

그림 8: 입력 시퀀스

 

 

  • 이제 필터에 주어진 방정식을 사용하여 왼쪽에서 오른쪽으로 디자인을 시작합니다. 방정식의 첫 번째 덧셈은 아래 그림과 같이 첫 번째 단계를 만듭니다.

그림 9: 첫 번째 단계

 

 

  • 그런 다음 동일한 입력이 단일 지연과 함께 사용되어 두 번째 단계를 만들고 아래 그림과 같이 상수 값 1을 곱합니다.

 

그림 10: 두 번째 단계

 

 

  • 아래 그림과 같이 2배의 지연 입력, 즉 x[n-2]를 제공하기 위해 첫 번째 지연 블록의 출력에 지연 블록이 하나 더 있는 세 번째 단계의 경우에도 마찬가지입니다.

그림 11: 세 번째 단계

 

 

  • 이제 세 단계의 출력이 모두 합 블록을 사용하여 추가됩니다. 그러나 먼저 우리가 이전에 했던 것처럼 합 블록의 입력 수를 변경합니다. 그리고 합 블록의 출력에서 아래 그림과 같이 2 입력 범위(입력용과 출력용)를 연결합니다;

 

그림 12: 전체 블록 다이어그램

 

 

이제 이전과 같이 시뮬레이션 중지 시간을 1로 변경하고 simulink 모델을 실행합니다. 실행이 완료된 후 스코프를 두 번 클릭하면 필터의 출력이 아래 그림과 같이 표시됩니다.

그림 13: 출력

728x90
반응형
그리드형