Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

designfilt

디지털 필터 설계

designfilt는 더 이상 스크립트나 함수 내에서 이 함수 자체를 올바르게 호출하도록 도와주지 않습니다. 자세한 내용은 호환성 관련 고려 사항 항목을 참조하십시오.

설명

예제

d = designfilt(resp,Name,Value)는 응답 유형 resp를 갖는 digitalFilter 객체 d를 설계합니다. resp의 예로는 'lowpassfir''bandstopiir'이 있습니다. 일련의 이름-값 인수를 사용하여 필터를 더 자세히 지정합니다. 허용되는 사양 세트는 resp에 따라 달라지며, 다음 항목의 조합으로 구성됩니다.

  • 주파수 제약 조건 - 필터가 원하는 동작을 보이게 되는 주파수에 대응합니다. 'PassbandFrequency''CutoffFrequency'가 그러한 예입니다. 주파수 제약 조건은 항상 지정해야 합니다.

  • 크기 제약 조건 - 특정 주파수 범위에서의 필터 동작을 설명합니다. 'PassbandRipple''StopbandAttenuation'이 그러한 예입니다. designfilt는 크기 제약 조건이 지정되지 않은 경우 디폴트 값을 제공합니다. 임의 크기 설계에서는 항상 원하는 진폭으로 구성된 벡터를 지정해야 합니다.

  • 필터 차수: 일부 설계 방법에서는 사용자가 차수를 지정할 수 있습니다. 그 외의 설계 방법은 최소 차수 설계를 생성합니다. 즉, 지정된 제약 조건을 충족하는 가장 작은 필터를 생성합니다.

  • 설계 방법 - 필터를 설계하는 데 사용되는 알고리즘입니다. 제약된 최소제곱('cls')과 카이저 윈도우 생성('kaiserwin')이 그러한 예입니다. 일부 사양 세트의 경우에는 여러 설계 방법 중에서 하나를 선택할 수 있습니다. 그 밖의 경우에는 원하는 사양을 충족하는 단 하나의 방법만 사용할 수 있습니다.

  • 설계 방법 옵션 - 지정된 설계 방법과 관련된 파라미터입니다. 'window' 방법의 경우 'Window'가, 임의 크기 등리플 설계의 경우 최적화 'Weights'가 그러한 예입니다. designfilt는 설계 옵션이 지정되지 않은 경우 디폴트 값을 제공합니다.

  • 샘플 레이트 - 필터가 동작하는 주파수입니다. designfilt의 디폴트 샘플 레이트는 2Hz입니다. 이 값을 사용하는 것은 정규화 주파수로 작업하는 것과 동일합니다.

참고

명령줄에 불완전하거나 짝이 맞지 않는 이름-값 인수 세트를 지정하면 designfilt필터 설계 도우미를 열도록 제안합니다. 필터 설계를 도와주는 이 도우미는 명령줄에 올바르게 수정된 MATLAB® 코드를 붙여 넣어 줍니다.

올바르지 않은 사양 세트를 사용하여 스크립트나 함수에서 designfilt를 호출하면 designfilt필터 설계 도우미를 여는 링크가 포함된 오류 메시지를 반환합니다. 필터 설계를 도와주는 이 도우미는 명령줄에 올바르게 수정된 MATLAB 코드를 붙여 넣어 줍니다. 설계된 필터는 작업 공간에 저장됩니다.

  • filter 함수를 dataOut = filter(d,dataIn) 형식으로 사용하여 digitalFilter d로 입력 신호 dataIn을 필터링합니다. IIR 필터의 경우 filter 함수는 Direct-Form II 구현을 사용합니다. filtfiltfftfilt 함수를 digitalFilter 객체와 함께 사용할 수도 있습니다.

  • FVTool을 사용하여 필터 d를 시각화합니다.

  • d.Coefficients를 입력하여 digitalFilter d의 계수를 구합니다. IIR 필터의 경우, 계수는 2차섹션형(SOS)으로 표현됩니다.

  • digitalFilter 객체와 함께 사용할 수 있는 필터링 함수 및 분석 함수의 목록은 digitalFilter 항목을 참조하십시오.

designfilt(d)를 사용하면 기존 디지털 필터 d를 편집할 수 있습니다. 이를 사용하면 필터 사양이 입력된 채로 필터 설계 도우미가 열리며 수정이 가능해집니다. 이는 digitalFilter 객체를 편집할 수 있는 유일한 방법입니다. 이 외의 경우, 해당 속성은 읽기 전용입니다.

예제

모두 축소

저역 차단 주파수 400Hz와 고역 차단 주파수 450Hz를 갖는 20차 대역통과 FIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다.

bpfilt = designfilt('bandpassfir', ...
    'FilterOrder',20,'CutoffFrequency1',400, ...
    'CutoffFrequency2',450,'SampleRate',1500);

필터의 크기 응답을 시각화합니다.

freqz(bpfilt.Coefficients,1,[],1500)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

이를 사용하여 1000개 샘플을 포함하는 랜덤 신호를 필터링합니다.

dataIn = randn(1000,1);
dataOut = filter(bpfilt,dataIn);

저역 3dB 주파수 400Hz와 고역 3dB 주파수 450Hz를 갖는 20차 대역통과 IIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다.

bpfilt = designfilt('bandpassiir', ...
    'FilterOrder',20,'HalfPowerFrequency1',400, ...
    'HalfPowerFrequency2',450,'SampleRate',1500);

필터의 주파수 응답을 시각화합니다.

freqz(bpfilt.Coefficients,[],1500)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

이를 사용하여 1000개 샘플로 구성된 랜덤 신호를 필터링합니다.

dataIn = randn(1000,1);
dataOut = filter(bpfilt,dataIn);

입력 인수

모두 축소

필터 응답과 유형으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

유한 임펄스 응답(FIR) 저역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 다섯 번째 사양 세트를 사용합니다.

d = designfilt('lowpassfir', ...        % Response type
       'FilterOrder',25, ...            % Filter order
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',550, ...
       'DesignMethod','ls', ...         % Design method
       'PassbandWeight',1, ...          % Design method options
       'StopbandWeight',2, ...
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

무한 임펄스 응답(IIR) 저역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 첫 번째 사양 세트를 사용합니다.

d = designfilt('lowpassiir', ...        % Response type
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',550, ...
       'PassbandRipple',4, ...          % Magnitude constraints
       'StopbandAttenuation',55, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','passband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

유한 임펄스 응답(FIR) 고역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 첫 번째 사양 세트를 사용합니다.

d = designfilt('highpassfir', ...       % Response type
       'StopbandFrequency',400, ...     % Frequency constraints
       'PassbandFrequency',550, ...
       'StopbandAttenuation',55, ...    % Magnitude constraints
       'PassbandRipple',4, ...
       'DesignMethod','kaiserwin', ...  % Design method
       'ScalePassband',false, ...       % Design method options
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

필터 차수 인수 이름주파수 제약 조건 인수 이름크기 제약 조건 인수 이름'DesignMethod' 인수 값설계 옵션 인수 이름

N/A(최소 차수 설계)

'StopbandFrequency'

'PassbandFrequency'

'StopbandAttenuation'

'PassbandRipple'

'equiripple'(디폴트 값)

N/A

'kaiserwin'

'MinOrder'

'ScalePassband'

'FilterOrder'

'CutoffFrequency'

N/A

'window'

'Window'

'ScalePassband'

'FilterOrder'

'CutoffFrequency'

'StopbandAttenuation'

'PassbandRipple'

'cls'

'PassbandOffset'

'ZeroPhase'

'FilterOrder'

'StopbandFrequency'

'PassbandFrequency'

N/A

'equiripple'(디폴트 값)

'PassbandWeight'

'StopbandWeight'

'ls'

'PassbandWeight'

'StopbandWeight'

무한 임펄스 응답(IIR) 고역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 첫 번째 사양 세트를 사용합니다.

d = designfilt('highpassiir', ...       % Response type
       'StopbandFrequency',400, ...     % Frequency constraints
       'PassbandFrequency',550, ...
       'StopbandAttenuation',55, ...    % Magnitude constraints
       'PassbandRipple',4, ...
       'DesignMethod','cheby1', ...     % Design method
       'MatchExactly','stopband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

유한 임펄스 응답(FIR) 대역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 네 번째 사양 세트를 사용합니다.

d = designfilt('bandpassfir', ...       % Response type
       'FilterOrder',86, ...            % Filter order
       'StopbandFrequency1',400, ...    % Frequency constraints
       'PassbandFrequency1',450, ...
       'PassbandFrequency2',600, ...
       'StopbandFrequency2',650, ...
       'DesignMethod','ls', ...         % Design method
       'StopbandWeight1',1, ...         % Design method options
       'PassbandWeight', 2, ...
       'StopbandWeight2',3, ...
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

무한 임펄스 응답(IIR) 대역통과 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 첫 번째 사양 세트를 사용합니다.

d = designfilt('bandpassiir', ...       % Response type
       'StopbandFrequency1',400, ...    % Frequency constraints
       'PassbandFrequency1',450, ...
       'PassbandFrequency2',600, ...
       'StopbandFrequency2',650, ...
       'StopbandAttenuation1',40, ...   % Magnitude constraints
       'PassbandRipple',1, ...
       'StopbandAttenuation2',50, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','passband', ...   % Design method options
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

유한 임펄스 응답(FIR) 대역저지 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 네 번째 사양 세트를 사용합니다.

d = designfilt('bandstopfir', ...       % Response type
       'FilterOrder',32, ...            % Filter order
       'PassbandFrequency1',400, ...    % Frequency constraints
       'StopbandFrequency1',500, ...
       'StopbandFrequency2',700, ...
       'PassbandFrequency2',850, ...
       'DesignMethod','ls', ...         % Design method
       'PassbandWeight1',1, ...         % Design method options
       'StopbandWeight', 3, ...
       'PassbandWeight2',5, ...
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

무한 임펄스 응답(IIR) 대역저지 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 첫 번째 사양 세트를 사용합니다.

d = designfilt('bandstopiir', ...       % Response type
       'PassbandFrequency1',400, ...    % Frequency constraints
       'StopbandFrequency1',500, ...
       'StopbandFrequency2',700, ...
       'PassbandFrequency2',850, ...
       'PassbandRipple1',1, ...         % Magnitude constraints
       'StopbandAttenuation',55, ...
       'PassbandRipple2',1, ...
       'DesignMethod','ellip', ...      % Design method
       'MatchExactly','both', ...       % Design method options
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder'를 생략하거나(필요한 경우) 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 크기 제약 조건을 생략하면 designfilt는 디폴트 값을 사용합니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

유한 임펄스 응답(FIR) 미분기 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 두 번째 사양 세트를 사용합니다.

d = designfilt('differentiatorfir', ... % Response type
       'FilterOrder',42, ...            % Filter order
       'PassbandFrequency',400, ...     % Frequency constraints
       'StopbandFrequency',500, ...
       'DesignMethod','equiripple', ... % Design method
       'PassbandWeight',1, ...          % Design method options
       'StopbandWeight',4, ...
       'SampleRate',2000)               % Sample rate

  • 부분대역 미분기를 설계할 때 'FilterOrder'를 생략하거나 주파수 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

필터 차수 인수 이름주파수 제약 조건 인수 이름크기 제약 조건 인수 이름'DesignMethod' 인수 값설계 옵션 인수 이름

'FilterOrder'

N/A

N/A

'equiripple'(디폴트 값)

N/A

'ls'

N/A

'FilterOrder'

'PassbandFrequency'

'StopbandFrequency'

N/A

'equiripple'(디폴트 값)

'PassbandWeight'

'StopbandWeight'

'ls'

N/A

유한 임펄스 응답(FIR) 힐베르트 변환기 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 사양 세트를 사용합니다.

d = designfilt('hilbertfir', ...        % Response type
       'FilterOrder',12, ...            % Filter order
       'TransitionWidth',400, ...       % Frequency constraints
       'DesignMethod','ls', ...         % Design method
       'SampleRate',2000)               % Sample rate

  • 'FilterOrder' 또는 'TransitionWidth'를 생략하면 designfilt는 오류를 발생시킵니다.

  • 'DesignMethod'를 생략하면 designfilt는 힐베르트 변환기에 대한 디폴트 설계 방법을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

필터 차수 인수 이름주파수 제약 조건 인수 이름크기 제약 조건 인수 이름'DesignMethod' 인수 값설계 옵션 인수 이름

'FilterOrder'

'TransitionWidth'

N/A

'equiripple'(디폴트 값)

N/A

'ls'

N/A

임의 크기 응답을 갖는 유한 임펄스 응답(FIR) 필터를 설계하려면 이 옵션을 선택하십시오. 이 예제에서는 표에 나와 있는 두 번째 사양 세트를 사용합니다.

d = designfilt('arbmagfir', ...         % Response type
       'FilterOrder',88, ...            % Filter order
       'NumBands',4, ...                % Frequency constraints
       'BandFrequencies1',[0 20], ...
       'BandFrequencies2',[25 40], ...
       'BandFrequencies3',[45 65], ...
       'BandFrequencies4',[70 100], ...
       'BandAmplitudes1',[2 2], ...     % Magnitude constraints
       'BandAmplitudes2',[0 0], ...
       'BandAmplitudes3',[1 1], ...
       'BandAmplitudes4',[0 0], ...
       'DesignMethod','ls', ...         % Design method
       'BandWeights1',[1 1]/10, ...     % Design method options
       'BandWeights2',[3 1], ...
       'BandWeights3',[2 4], ...
       'BandWeights4',[5 1], ...
       'SampleRate',200)                % Sample rate

  • 'FilterOrder'를 생략하거나 주파수 제약 조건이나 크기 제약 조건 중 하나라도 생략하면 designfilt는 오류를 발생시킵니다.

  • 'DesignMethod'를 생략하면 designfilt는 사양 세트에 대한 디폴트 설계 방법을 사용합니다.

  • 설계 방법 옵션을 생략하면 designfilt는 선택한 설계 방법에 대한 디폴트 값을 사용합니다.

  • 'SampleRate'를 생략하면 designfilt는 이 값을 2Hz로 설정합니다.

필터 차수 인수 이름주파수 제약 조건 인수 이름크기 제약 조건 인수 이름'DesignMethod' 인수 값설계 옵션 인수 이름

'FilterOrder'

'Frequencies'

'Amplitudes'

'freqsamp'(디폴트 값)

'Window'

'equiripple'

'Weights'

'ls'

'Weights'

'FilterOrder'

'NumBands'

'BandFrequencies1'

'BandFrequenciesN'

'BandAmplitudes1'

'BandAmplitudesN'

'equiripple'(디폴트 값)

'BandWeights1'

'BandWeightsN'

'ls'

'BandWeights1'

'BandWeightsN'

데이터형: char | string

디지털 필터로, designfilt에 의해 생성된 digitalFilter 객체로 지정됩니다. 기존 digitalFilter의 사양을 변경하려면 이 입력값을 사용하십시오.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: FilterOrder=20,CutoffFrequency=0.4는 저역통과 FIR 필터를 지정하는 데 충분합니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'FilterOrder',20,'CutoffFrequency',0.4는 저역통과 FIR 필터를 지정하는 데 충분합니다.

일부 이름-값 조합은 유효하지 않습니다. 유효한 조합은 필요한 필터 응답과 설계의 주파수 제약 조건 및 크기 제약 조건에 따라 달라집니다.

필터 차수

모두 축소

필터 차수로, 양의 정수 스칼라로 지정됩니다.

데이터형: double

IIR 설계의 분자 차수로, 양의 정수 스칼라로 지정됩니다.

데이터형: double

IIR 설계의 분모 차수로, 양의 정수 스칼라로 지정됩니다.

데이터형: double

주파수 제약 조건

모두 축소

통과대역 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.

'PassbandFrequency1'은 대역통과 설계나 대역저지 설계의 저역 통과대역 주파수입니다.

'PassbandFrequency2'는 대역통과 설계나 대역저지 설계의 고역 통과대역 주파수입니다.

데이터형: double

저지대역 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.

'StopbandFrequency1'은 대역통과 설계나 대역저지 설계의 저역 저지대역 주파수입니다.

'StopbandFrequency2'는 대역통과 설계나 대역저지 설계의 고역 저지대역 주파수입니다.

데이터형: double

6dB 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.

'CutoffFrequency1'은 대역통과 설계나 대역저지 설계의 저역 6dB 주파수입니다.

'CutoffFrequency2'는 대역통과 설계나 대역저지 설계의 고역 6dB 주파수입니다.

데이터형: double

3dB 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.

'HalfPowerFrequency1'은 대역통과 설계나 대역저지 설계의 저역 3dB 주파수입니다.

'HalfPowerFrequency2'는 대역통과 설계나 대역저지 설계의 고역 3dB 주파수입니다.

데이터형: double

힐베르트 변환기의 통과대역과 저지대역 사이의 천이 영역의 폭으로, 양의 스칼라로 지정됩니다.

데이터형: double

응답 주파수로, 벡터로 지정됩니다. 이 변수를 사용하여 임의 크기 응답의 필터가 원하는 진폭을 갖게 되는 주파수를 나열할 수 있습니다. 주파수는 단조 증가(Monotonically Increasing)해야 하고 나이퀴스트 범위 내에 있어야 합니다. 벡터의 첫 번째 요소는 0 또는 –fs/2(여기서 fs는 샘플 레이트임)여야 하고, 마지막 요소는 fs/2여야 합니다. 샘플 레이트를 지정하지 않으면 designfilt는 디폴트 값 2Hz를 사용합니다.

데이터형: double

다중대역 설계에 포함된 대역 수로, 10보다 크지 않은 양의 정수 스칼라로 지정됩니다.

데이터형: double

다중대역 응답 주파수로, 숫자형 벡터로 지정됩니다. 'BandFrequenciesi'(여기서 i는 1~'NumBands'임)는 다중대역 설계의 i번째 대역이 원하는 값 'BandAmplitudesi'를 갖게 되는 주파수를 포함하는 벡터입니다. 'NumBands'는 최대 10일 수 있습니다. 주파수는 나이퀴스트 범위 내에 있어야 하고 단조 증가(Monotonically Increasing)하는 순서로 지정되어야 합니다. 인접한 주파수 대역들은 교차점에서 동일한 진폭을 가져야 합니다.

데이터형: double

크기 제약 조건

모두 축소

통과대역 리플로, 양의 스칼라로 지정됩니다(단위: 데시벨).

'PassbandRipple1'은 대역저지 설계의 저역 통과대역 리플입니다.

'PassbandRipple2'는 대역저지 설계의 고역 통과대역 리플입니다.

데이터형: double

저지대역 감쇠량으로, 양의 스칼라로 지정됩니다(단위: 데시벨).

'StopbandAttenuation1'은 대역통과 설계의 저역 저지대역 감쇠량입니다.

'StopbandAttenuation2'는 대역통과 설계의 고역 저지대역 감쇠량입니다.

데이터형: double

임의 크기 응답 필터에 대한 원하는 응답 진폭으로, 벡터로 지정됩니다. 진폭을 선형 단위로 표현합니다. 벡터는 'Frequencies'와 길이가 동일해야 합니다.

데이터형: double

다중대역 응답 진폭으로, 숫자형 벡터로 지정됩니다. 'BandAmplitudesi'(여기서 i는 1~'NumBands'임)는 다중대역 설계의 i번째 대역에서 원하는 진폭을 포함하는 벡터입니다. 'NumBands'는 최대 10일 수 있습니다. 진폭을 선형 단위로 표현합니다. 'BandAmplitudesi''BandFrequenciesi'와 길이가 동일해야 합니다. 인접한 주파수 대역들은 교차점에서 동일한 진폭을 가져야 합니다.

데이터형: double

설계 방법

모두 축소

설계 방법으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 어떤 설계 방법을 선택할지는 사용자가 지정하는 주파수 제약 조건과 크기 제약 조건 세트에 따라 달라집니다.

  • 'butter'는 버터워스 IIR 필터를 설계합니다. 버터워스 필터는 통과대역이 최대로 평탄한 매끄러운 단조 주파수 응답을 가집니다. 이 필터는 평탄한 대신 롤오프 가파름이 낮습니다.

  • 'cheby1'은 체비쇼프 유형 I IIR 필터를 설계합니다. 체비쇼프 유형 I 필터는 통과대역에서 등리플이고 저지대역에서 최대로 평탄한 주파수 응답을 가집니다. 통과대역 리플은 롤오프 가파름이 증가할수록 커집니다.

  • 'cheby2'는 체비쇼프 유형 II IIR 필터를 설계합니다. 체비쇼프 유형 II 필터는 통과대역에서 최대로 평탄하고 저지대역에서 등리플인 주파수 응답을 가집니다.

  • 'cls'는 제약된 최소제곱을 사용하여 FIR 필터를 설계합니다. 이 방법은 지정된 임의의 조각별 선형 함수와 필터의 크기 응답 간의 차이를 최소화합니다. 동시에, 이 방법을 사용하면 통과대역 리플과 저지대역 감쇠량에 대한 제약 조건을 설정할 수 있습니다.

  • 'ellip'은 타원 IIR 필터를 설계합니다. 타원 필터는 통과대역과 저지대역 모두에서 등리플인 주파수 응답을 가집니다.

  • 'equiripple'은 팍스-맥클렐란(Parks-McClellan) 알고리즘을 사용하여 등리플 FIR 필터를 설계합니다. 등리플 필터는 모든 대역에서 최대 리플 크기를 최소화하는 주파수 응답을 가집니다.

  • 'freqsamp'는 주파수 응답을 균일하게 샘플링하고 푸리에 역변환을 구하여 임의 크기 응답을 갖는 FIR 필터를 설계합니다.

  • 'kaiserwin'은 카이저 윈도우 방법을 사용하여 FIR 필터를 설계합니다. 이 방법은 이상적인 필터의 임펄스 응답을 자르고 카이저 윈도우를 사용하여 결과로 생성되는 잘림 진동을 감쇠시킵니다.

  • 'ls'는 최소제곱을 사용하여 FIR 필터를 설계합니다. 이 방법은 지정된 임의의 조각별 선형 함수와 필터의 크기 응답 간의 차이를 최소화합니다.

  • 'maxflat'은 최대 평탄 FIR 필터를 설계합니다. 이러한 필터는 통과대역이 최대로 평탄한 매끄러운 단조 주파수 응답을 가집니다.

  • 'window'는 최소제곱 근사법을 사용하여 필터 계수를 계산한 후 'Window'를 사용하여 임펄스 응답을 평탄화합니다.

데이터형: char | string

설계 방법 옵션

모두 축소

'kaiserwin' 설계의 최소 차수 패리티로, 'any' 또는 'even'으로 지정됩니다. 'MinOrder''even'으로 설정하면 designfilt 함수는 짝수 차수를 갖는 최소 차수를 반환합니다. 'MinOrder''any'로 설정하면 반환되는 필터는 짝수 또는 홀수 차수 중 더 작은 차수를 가질 수 있습니다.

데이터형: char | string

윈도우로, 길이가 N + 1인 벡터(여기서 N은 필터 차수임)로 지정됩니다. 'Window'는 윈도우 이름 또는 윈도우를 생성하는 데 사용된 함수를 지정하는 함수 핸들과 쌍으로 구성될 수도 있습니다. 이러한 함수는 모두 첫 번째 입력값으로 N + 1을 받아야 합니다. 추가 입력값은 셀형 배열을 지정하여 전달할 수 있습니다. 기본적으로, 'Window''freqsamp' 설계 방법의 경우 빈 벡터이고, 'window' 설계 방법의 경우 @hamming입니다.

사용 가능한 윈도우 목록은 윈도우 항목을 참조하십시오.

예: 'Window',hann(N+1)'Window',(1-cos(2*pi*(0:N)'/N))/2는 모두 차수가 N인 필터에 사용하기 위해 핸(Hann) 윈도우를 지정합니다.

예: 'Window','hamming'은 필요한 차수의 해밍 윈도우를 지정합니다.

예: 'Window',@mywindow를 사용하면 자신만의 고유한 윈도우 함수를 정의할 수 있습니다.

예: 'Window',{@kaiser,0.5}는 형태 파라미터로 0.5를 사용하여 필요한 차수의 카이저 윈도우를 지정합니다.

데이터형: double | char | string | function_handle | cell

정확히 일치시킬 대역으로, 'stopband', 'passband' 또는 'both'로 지정됩니다. 'both'는 타원 설계 방법에만 사용할 수 있으며 여기서 이 값은 디폴트 값입니다. 'stopband''butter' 방법과 'cheby2' 방법의 디폴트 값입니다. 'passband''cheby1' 방법의 디폴트 값입니다.

데이터형: char | string

통과대역 오프셋으로, 양의 스칼라(단위: 데시벨)로 지정됩니다. 'PassbandOffset'은 통과대역의 필터 이득을 지정합니다.

예: 'PassbandOffset',0은 통과대역에서 단위 이득을 갖는 필터를 생성합니다.

예: 'PassbandOffset',2는 2dB 또는 1.259의 통과대역 이득을 갖는 필터를 생성합니다.

데이터형: double

통과대역 스케일링으로, 논리형 스칼라로 지정됩니다. 'ScalePassband'true로 설정하면 윈도우 생성(Windowing) 후 필터가 영주파수에서 단위 이득을 갖도록 통과대역이 스케일링됩니다.

예: 'Window',{@kaiser,0.1},'ScalePassband',true를 사용하면 영주파수에서의 크기 응답이 정확히 0dB인 필터를 지정할 수 있습니다. 'ScalePassband',false를 지정하는 경우에는 그렇게 되지 않습니다. 이를 확인하려면 fvtool을 사용하여 필터를 시각화하고 확대하십시오.

데이터형: logical

영위상으로, 논리형 스칼라로 지정됩니다. 'ZeroPhase'true로 설정하면 결과로 생성되는 필터의 영위상 응답이 항상 양수입니다. 이를 통해 결과에 대해 스펙트럼 분해를 수행하여 최소 위상 필터를 구할 수 있습니다.

데이터형: logical

통과대역 최적화 가중치로, 양의 스칼라로 지정됩니다.

'PassbandWeight1'은 대역저지 FIR 설계에 대한 저역 통과대역 최적화 가중치입니다.

'PassbandWeight2'는 대역저지 FIR 설계에 대한 고역 통과대역 최적화 가중치입니다.

데이터형: double

저지대역 최적화 가중치로, 양의 스칼라로 지정됩니다.

'StopbandWeight1'은 대역통과 FIR 설계에 대한 저역 저지대역 최적화 가중치입니다.

'StopbandWeight2'는 대역통과 FIR 설계에 대한 고역 저지대역 최적화 가중치입니다.

데이터형: double

최적화 가중치로, 'Amplitudes'와 길이가 같은 벡터나 양의 스칼라로 지정됩니다.

데이터형: double

다중대역 가중치로, 양의 스칼라 세트나 벡터 세트로 지정됩니다. 'BandWeightsi'(여기서 i는 1~'NumBands'임)는 다중대역 설계의 i번째 대역의 최적화 가중치를 포함하는 스칼라 또는 벡터입니다. 벡터로 지정된 경우, 'BandWeightsi''BandAmplitudesi'와 길이가 동일해야 합니다.

데이터형: double

샘플 레이트

모두 축소

샘플 레이트로, 헤르츠를 단위로 하는 양의 스칼라로 지정됩니다. 정규화 주파수로 작업하려면 'SampleRate'를 2로 설정하거나 이를 단순히 생략하면 됩니다.

데이터형: double

출력 인수

모두 축소

디지털 필터로, digitalFilter 객체로 반환됩니다.

세부 정보

모두 축소

필터 설계 도우미

불완전하거나 일관되지 않은 설계 파라미터 세트를 지정하면 designfilt가 필터 설계 도우미를 열도록 제안합니다.

resp에 대한 인수 설명에, 사용 가능한 모든 응답 유형에 대한 유효한 사양 세트의 전체 목록이 나와 있습니다.

이 도우미는 명령줄에서 designfilt를 호출하는지 아니면 스크립트 또는 함수에서 호출하는지에 따라 각각 다르게 동작합니다.

명령줄에서의 필터 설계 도우미

2kHz로 샘플링된 신호가 있다고 가정합니다. 650Hz보다 큰 주파수 성분을 억제하는 저역통과 FIR 필터를 설계하라는 요청을 받았습니다. 사양 파라미터로 “차단 주파수”를 사용하려고 합니다. MATLAB 명령줄에 다음 코드를 입력합니다.

Fsamp = 2e3;
Fctff = 650;
dee = designfilt('lowpassfir','CutoffFrequency',Fctff, ...
    'SampleRate',Fsamp);

다음 대화 상자가 화면에 표시되기 때문에 무언가가 잘못된 것 같습니다.

Filter Design Assistant dialog window

를 클릭하면 코드 생성을 제안하는 새 대화 상자가 표시됩니다. 이전에 정의한 변수가 예상된 위치에 삽입되었는지 확인합니다.

Filter Design Assistant dialog for lowpass FIR design

제공된 옵션 중 일부를 살펴본 후 수정된 필터를 테스트하기로 합니다. 확인을 클릭하면 명령줄에 다음 코드가 표시됩니다.

designfilt('lowpassfir','FilterOrder', 10, ...
    'CutoffFrequency',Fctff,'SampleRate',2000);

필터 이름을 입력하면 대화 상자의 정보가 다시 표시됩니다.

dee
dee = 
 digitalFilter with properties:

    Coefficients: [-0.0036 0.0127 -0.0066 -0.0881 0.2595 ...
                   0.6521 0.2595 -0.0881 -0.0066 0.0127 -0.0036]
    Specifications:
    FrequencyResponse: 'lowpass'
      ImpulseResponse: 'fir'
           SampleRate: 2000
      CutoffFrequency: 650
          FilterOrder: 10
         DesignMethod: 'window'

 Use fvtool to visualize filter
 Use designfilt to edit filter
 Use filter to filter data

FVTool을 호출하여 dee의 주파수 응답에 대한 플롯을 얻습니다.

fvtool(dee)

Magnitude response plot using Filter Visualization Tool

차단 주파수가 특별히 예리해 보이지 않습니다. 대부분의 주파수에 대해 응답은 40dB보다 높습니다. 도우미에 “저지대역 감쇠량”이라고 하는 “크기 제약 조건”을 설정하기 위한 옵션이 있다는 사실을 기억합시다. 필터 이름을 입력값으로 사용해 designfilt를 호출하여 도우미를 엽니다.

designfilt(dee)

크기 제약 조건 드롭다운 메뉴를 클릭하고 통과대역 리플 및 저지대역 감쇠를 선택합니다. 설계 방법이 윈도우에서 FIR 제약된 최소제곱(FIR constrained least-squares)로 바뀌었음을 확인합니다. 감쇠량의 디폴트 값은 40보다 큰 60dB입니다. 확인을 클릭하고 결과로 생성되는 필터를 시각화합니다.

dee = designfilt('lowpassfir','FilterOrder',10, ...
    'CutoffFrequency',650,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with passband ripple and stopband attenuation using Filter Visualization Tool

차단 주파수가 여전히 예리해 보이지 않습니다. 감쇠량은 실제로 60dB이지만, 900Hz보다 높은 주파수에 적용됩니다.

필터를 입력값으로 사용하여 designfilt를 다시 불러옵니다.

designfilt(dee)

도우미가 다시 나타납니다.

Filter Design Assistant dialog for modified lowpass FIR design

수락된 주파수와 거부된 주파수 사이의 차이를 좁히려면 필터의 차수를 늘리거나 주파수 제약 조건차단(6dB) 주파수에서 통과대역 주파수 및 저지대역 주파수로 변경하십시오. 필터 차수를 10에서 50으로 변경하면 더욱 예리한 필터가 생성됩니다.

dee = designfilt('lowpassfir','FilterOrder',50, ...
    'CutoffFrequency',650,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with increased filter order using Filter Visualization Tool

통과대역 주파수와 저지대역 주파수를 각각 600Hz와 700Hz로 설정하는 간단한 실험을 통해 유사한 필터를 얻을 수 있습니다.

dee = designfilt('lowpassfir','PassbandFrequency',600, ...
    'StopbandFrequency',700,'PassbandRipple',1, ...
    'StopbandAttenuation',60,'SampleRate',2000);
fvtool(dee)

Magnitude response with modified passband and stopband frequencies using Filter Visualization Tool

스크립트 또는 함수에서의 필터 설계 도우미

2kHz로 샘플링된 신호가 있다고 가정합니다. 700Hz 미만의 주파수를 저지하는 고역통과 필터를 설계하라는 요청을 받았습니다. 신호의 위상은 신경 쓰지 않으며, 낮은 차수의 필터를 사용하여 작업해야 합니다. 따라서 IIR 필터가 적당할 수 있습니다. 어떤 필터 차수가 최상인지 알지 못하므로, 차수를 입력값으로 받는 함수를 작성합니다. MATLAB 편집기를 열고 파일을 생성합니다.

function dataOut = hipassfilt(Order,dataIn)
hpFilter = designfilt('highpassiir','FilterOrder',N);
dataOut = filter(hpFilter,dataIn);
end

함수를 테스트하기 위해 주파수가 500Hz와 800Hz인 두 개의 정현파로 구성된 신호를 생성하고 0.1초 동안의 샘플을 생성합니다. 초기 추측값으로 5차 필터가 타당할 수 있습니다. driveHPfilt.m이라는 스크립트를 생성합니다.

% script driveHPfilt.m
Fsamp = 2e3;
Fsm = 500;
Fbg = 800;
t = 0:1/Fsamp:0.1;
sgin = sin(2*pi*Fsm*t)+sin(2*pi*Fbg*t);
N = 5;
sgout = hipassfilt(N,sgin);

명령줄에서 스크립트를 실행하면 오류 메시지가 표시됩니다.

오류 메시지에는 도우미를 열어 MATLAB 코드를 수정할 수 있는 옵션이 제공됩니다. Click here를 클릭하여 화면에 필터 설계 도우미를 표시합니다.

Filter Design Assistant dialog for highpass IIR design

다음과 같은 문제가 발견되었습니다. 주파수 제약 조건을 지정하지 않았습니다. 또한, 샘플 레이트를 설정하지 않았습니다. 실험해 보면, 주파수 단위Hz로, 통과대역 주파수를 700Hz로, 입력값 Fs를 2000Hz로 지정할 수 있음을 확인할 수 있습니다. 설계 방법버터워스에서 체비쇼프 유형 I로 변경됩니다. 확인을 클릭하면 명령줄에 다음이 표시됩니다.

hp = designfilt('highpassiir','FilterOrder',N, ...
    'PassbandFrequency',700,'PassbandRipple',1, ...
    'SampleRate',2000);

digitalFilter 객체 hp는 작업 공간에 저장됩니다. 설계 제약 조건에 따라 사양 세트를 변경할 수 있습니다.

필터 설계 도우미 기본 설정

필터 설계 도우미를 제공하지 않도록 designfilt를 설정할 수 있습니다. 이 동작은 MATLAB 기본 설정을 지정하며, setpref를 사용하여 설정 해제할 수 있습니다.

  • 도우미가 매번 제공되도록 하려면 setpref('dontshowmeagain','filterDesignAssistant',false)를 사용하십시오. 도우미를 비활성화한 후, 이 명령을 사용하여 다시 가져올 수 있습니다.

  • 도우미를 영구적으로 비활성화하려면 setpref('dontshowmeagain','filterDesignAssistant',true)를 사용하십시오. 또한 초기 대화 상자에서 이 메시지를 다시 표시하지 않습니다를 클릭할 수도 있습니다.

오류 수정 여부를 묻는 메시지를 표시하지 않고 오류를 항상 수정하도록 designfilt를 설정할 수 있습니다. 이 동작은 MATLAB 기본 설정을 지정하며, setpref를 사용하여 설정 해제할 수 있습니다.

  • designfilt가 확인을 요청하지 않고 MATLAB 코드를 수정하도록 하려면 setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',false)를 사용하십시오. 확인 대화 상자에서 항상 적용을 클릭해도 됩니다.

  • 변경 내용을 적용하기를 원한다고 확인한 경우에만 designfilt가 MATLAB 코드를 수정하도록 하려면 setpref('dontshowmeagain','filterDesignAssistantCodeCorrection',true)를 사용하십시오. 이 명령을 사용하면 확인 대화 상자에서 항상 적용을 클릭한 효과를 취소할 수 있습니다.

문제 해결

유효하지 않은 사양 세트가 지정되었을 때 designfilt가 대화 상자나 오류 메시지에 포함된 링크를 통해 필터 설계 도우미를 제공하지 않는 경우가 있습니다.

  • MATLAB 툴스트립에서 또는 Ctrl+Enter를 눌러 코드 섹션 실행을 사용하는 경우 도우미가 제공되지 않습니다. 자세한 내용은 파일을 섹션으로 나누기 항목을 참조하십시오.

  • 코드가 designfilt를 여러 번 호출하고 이들 호출 중 적어도 하나가 잘못된 경우, 그리고 다음과 같은 경우 도우미가 제공되지 않습니다.

    • 명령줄에 코드를 붙여넣고 Enter 키를 눌러 실행합니다.

    • 편집기에서 코드를 선택하고 F9 키를 눌러 실행합니다.

  • 익명 함수를 사용하여 designfilt를 실행하는 경우 도우미가 제공되지 않습니다. 자세한 내용은 익명 함수 항목을 참조하십시오. 예를 들어, 다음 입력값은 도우미를 제공합니다.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    다음 입력값은 도우미를 제공하지 않습니다.
    myFilterDesigner = @designfilt;
    d = myFilterDesigner('lowpassfir','CutoffFrequency',0.6)

  • eval을 사용하여 designfilt를 실행하는 경우 도우미가 제공되지 않습니다. 예를 들어, 다음 입력값은 도우미를 제공합니다.

    d = designfilt('lowpassfir','CutoffFrequency',0.6)
    다음 입력값은 도우미를 제공하지 않습니다.
    myFilterDesigner = ...
        sprintf('designfilt(''%s'',''CutoffFrequency'',%f)', ...
        'lowpassfir',0.6);
    d = eval(myFilterDesigner)

필터 설계 도우미를 실행하려면 Java® 소프트웨어와 MATLAB 데스크탑이 필요합니다. MATLAB을 -nojvm, -nodisplay 또는 -nodesktop 옵션과 함께 실행하는 경우에는 지원되지 않습니다.

버전 내역

R2014a에 개발됨

모두 확장