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
로 신호를 필터링합니다. IIR 필터의 경우filter
함수는 Direct-Form II 구현을 사용합니다.filtfilt
및fftfilt
함수를digitalFilter
객체와 함께 사용할 수도 있습니다.FVTool을 사용하여
digitalFilter
d
를 시각화합니다.d.Coefficients
를 입력하여digitalFilter
d
의 계수를 구합니다. IIR 필터의 경우, 계수는 2차섹션형(SOS)으로 표현됩니다.digitalFilter
객체와 함께 사용할 수 있는 필터링 함수 및 분석 함수의 목록은digitalFilter
항목을 참조하십시오.
designfilt(
를 사용하면 기존 디지털 필터 d
)d
를 편집할 수 있습니다. 이를 사용하면 필터 사양이 입력된 채로 필터 설계 도우미가 열리며 수정이 가능해집니다. 이는 digitalFilter
객체를 편집할 수 있는 유일한 방법입니다. 이 외의 경우, 해당 속성은 읽기 전용입니다.
예제
저역통과 FIR 필터
정규화된 통과대역 주파수 rad/sample, 저지대역 주파수 rad/sample, 통과대역 리플 0.5dB, 저지대역 감쇠량 65dB을 갖는 최소 차수 저역통과 FIR 필터를 설계합니다. 카이저 윈도우를 사용하여 필터를 설계합니다. 필터의 크기 응답을 시각화합니다. 이를 사용하여 랜덤 데이터로 구성된 벡터를 필터링합니다.
lpFilt = designfilt('lowpassfir','PassbandFrequency',0.25, ... 'StopbandFrequency',0.35,'PassbandRipple',0.5, ... 'StopbandAttenuation',65,'DesignMethod','kaiserwin'); fvtool(lpFilt)
dataIn = rand(1000,1); dataOut = filter(lpFilt,dataIn);
저역통과 IIR 필터
차수 8, 통과대역 주파수 35kHz, 통과대역 리플 0.2dB을 갖는 저역통과 IIR 필터를 설계합니다. 샘플 레이트를 200kHz로 지정합니다. 필터의 크기 응답을 시각화합니다.
lpFilt = designfilt('lowpassiir','FilterOrder',8, ... 'PassbandFrequency',35e3,'PassbandRipple',0.2, ... 'SampleRate',200e3); fvtool(lpFilt)
설계한 필터를 사용하여 1000개 샘플로 구성된 랜덤 신호를 필터링합니다.
dataIn = randn(1000,1); dataOut = filter(lpFilt,dataIn);
2차섹션형(SOS)으로 표현되는 필터 계수를 출력합니다.
sos = lpFilt.Coefficients
sos = 4×6
0.2666 0.5333 0.2666 1.0000 -0.8346 0.9073
0.1943 0.3886 0.1943 1.0000 -0.9586 0.7403
0.1012 0.2023 0.1012 1.0000 -1.1912 0.5983
0.0318 0.0636 0.0318 1.0000 -1.3810 0.5090
고역통과 FIR 필터
정규화된 저지대역 주파수 rad/sample, 통과대역 주파수 rad/sample, 통과대역 리플 0.5dB, 저지대역 감쇠량 65dB을 갖는 최소 차수 고역통과 FIR 필터를 설계합니다. 카이저 윈도우를 사용하여 필터를 설계합니다. 필터의 크기 응답을 시각화합니다. 이를 사용하여 랜덤 데이터로 구성된 1000개 샘플을 필터링합니다.
hpFilt = designfilt('highpassfir','StopbandFrequency',0.25, ... 'PassbandFrequency',0.35,'PassbandRipple',0.5, ... 'StopbandAttenuation',65,'DesignMethod','kaiserwin'); fvtool(hpFilt)
dataIn = randn(1000,1); dataOut = filter(hpFilt,dataIn);
고역통과 IIR 필터
차수 8, 통과대역 주파수 75kHz, 통과대역 리플 0.2dB을 갖는 고역통과 IIR 필터를 설계합니다. 샘플 레이트를 200kHz로 지정합니다. 필터의 크기 응답을 시각화합니다. 랜덤 데이터로 구성된 1000개 샘플의 벡터에 필터를 적용합니다.
hpFilt = designfilt('highpassiir','FilterOrder',8, ... 'PassbandFrequency',75e3,'PassbandRipple',0.2, ... 'SampleRate',200e3); fvtool(hpFilt)
dataIn = randn(1000,1); dataOut = filter(hpFilt,dataIn);
대역통과 FIR 필터
저역 차단 주파수 500Hz와 고역 차단 주파수 560Hz를 갖는 20차 대역통과 FIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다. 필터의 크기 응답을 시각화합니다. 이를 사용하여 1000개 샘플을 포함하는 랜덤 신호를 필터링합니다.
bpFilt = designfilt('bandpassfir','FilterOrder',20, ... 'CutoffFrequency1',500,'CutoffFrequency2',560, ... 'SampleRate',1500); fvtool(bpFilt)
dataIn = randn(1000,1); dataOut = filter(bpFilt,dataIn);
필터 계수를 출력합니다.
b = bpFilt.Coefficients
b = 1×21
-0.0113 0.0067 0.0125 -0.0445 0.0504 0.0101 -0.1070 0.1407 -0.0464 -0.1127 0.1913 -0.1127 -0.0464 0.1407 -0.1070 0.0101 0.0504 -0.0445 0.0125 0.0067 -0.0113
대역통과 IIR 필터
저역 3dB 주파수 500Hz와 고역 3dB 주파수 560Hz를 갖는 20차 대역통과 IIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다. 필터의 주파수 응답을 시각화합니다. 이를 사용하여 1000개 샘플로 구성된 랜덤 신호를 필터링합니다.
bpFilt = designfilt('bandpassiir','FilterOrder',20, ... 'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ... 'SampleRate',1500); fvtool(bpFilt)
dataIn = randn(1000,1); dataOut = filter(bpFilt,dataIn);
대역저지 FIR 필터
저역 차단 주파수 500Hz와 고역 차단 주파수 560Hz를 갖는 20차 대역저지 FIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다. 필터의 크기 응답을 시각화합니다. 이를 사용하여 랜덤 데이터로 구성된 1000개 샘플을 필터링합니다.
bsFilt = designfilt('bandstopfir','FilterOrder',20, ... 'CutoffFrequency1',500,'CutoffFrequency2',560, ... 'SampleRate',1500); fvtool(bsFilt)
dataIn = randn(1000,1); dataOut = filter(bsFilt,dataIn);
대역저지 IIR 필터
저역 3dB 주파수 500Hz와 고역 3dB 주파수 560Hz를 갖는 20차 대역저지 IIR 필터를 설계합니다. 샘플 레이트는 1500Hz입니다. 필터의 크기 응답을 시각화합니다. 이를 사용하여 랜덤 데이터로 구성된 1000개 샘플을 필터링합니다.
bsFilt = designfilt('bandstopiir','FilterOrder',20, ... 'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ... 'SampleRate',1500); fvtool(bsFilt)
dataIn = randn(1000,1); dataOut = filter(bsFilt,dataIn);
FIR 미분기
차수가 7인 전체 대역 미분기 필터를 설계합니다. 필터의 영위상 응답을 표시합니다. 이를 사용하여 랜덤 데이터로 구성된 1000개 샘플의 벡터를 필터링합니다.
dFilt = designfilt('differentiatorfir','FilterOrder',7); fvtool(dFilt,'MagnitudeDisplay','Zero-phase')
dataIn = randn(1000,1); dataOut = filter(dFilt,dataIn);
FIR 힐베르트 변환기
차수가 18인 힐베르트 변환기를 설계합니다. 정규화 천이 폭을 rad/sample로 지정합니다. 필터의 크기 응답을 선형 단위로 표시합니다. 이를 사용하여 랜덤 데이터로 구성된 1000개 샘플의 벡터를 필터링합니다.
hFilt = designfilt('hilbertfir','FilterOrder',18,'TransitionWidth',0.25); fvtool(hFilt,'MagnitudeDisplay','magnitude')
dataIn = randn(1000,1); dataOut = filter(hFilt,dataIn);
임의 크기 FIR 필터
1kHz로 샘플링된 신호가 있다고 가정합니다. 100Hz와 350Hz 사이의 주파수와 400Hz보다 큰 주파수를 저지하는 필터를 설계합니다. 필터 차수를 60으로 지정합니다. 필터의 주파수 응답을 시각화합니다. 이를 사용하여 1000개 샘플로 구성된 랜덤 신호를 필터링합니다.
mbFilt = designfilt('arbmagfir','FilterOrder',60, ... 'Frequencies',0:50:500,'Amplitudes',[1 1 1 0 0 0 0 1 1 0 0], ... 'SampleRate',1000); fvtool(mbFilt)
dataIn = randn(1000,1); dataOut = filter(mbFilt,dataIn);
입력 인수
resp
— 필터 응답과 유형
'lowpassfir'
| 'lowpassiir'
| 'highpassfir'
| 'highpassiir'
| 'bandpassfir'
| 'bandpassiir'
| 'bandstopfir'
| 'bandstopiir'
| 'differentiatorfir'
| 'hilbertfir'
| 'arbmagfir'
필터 응답과 유형으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
'lowpassfir'
— FIR 저역통과 필터
응답 유형
유한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| N/A | ||
| ||||
N/A |
| N/A | ||
N/A |
| |||
| ||||
N/A |
| |||
|
'lowpassiir'
— IIR 저역통과 필터
응답 유형
무한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| |||
| ||||
| ||||
| ||||
N/A |
| N/A | ||
| N/A | |||
| N/A | |||
| N/A | |||
N/A |
| N/A |
'highpassfir'
— FIR 고역통과 필터
응답 유형
유한 임펄스 응답(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(최소 차수 설계) |
| N/A | ||
| ||||
N/A |
| |||
| ||||
N/A |
| |||
|
'highpassiir'
— IIR 고역통과 필터
응답 유형
무한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| |||
| ||||
| ||||
| ||||
N/A |
| N/A | ||
| N/A | |||
| N/A | |||
| N/A | |||
N/A |
| N/A |
'bandpassfir'
— FIR 대역통과 필터
응답 유형
유한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| N/A | ||
| ||||
N/A |
| |||
| ||||
N/A |
| |||
|
'bandpassiir'
— IIR 대역통과 필터
응답 유형
무한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| |||
| ||||
| ||||
| ||||
N/A |
| N/A | ||
| N/A | |||
| N/A | |||
| N/A |
'bandstopfir'
— FIR 대역저지 필터
응답 유형
유한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| N/A | ||
| ||||
N/A |
| |||
| ||||
N/A |
| |||
|
'bandstopiir'
— IIR 대역저지 필터
응답 유형
무한 임펄스 응답(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로 설정합니다.
필터 차수 인수 이름 | 주파수 제약 조건 인수 이름 | 크기 제약 조건 인수 이름 | 'DesignMethod' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A(최소 차수 설계) |
| |||
| ||||
| ||||
| ||||
N/A |
| N/A | ||
| N/A | |||
| N/A | |||
| N/A |
'differentiatorfir'
— FIR 미분기 필터
응답 유형
유한 임펄스 응답(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' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A | N/A |
| N/A | |
| N/A | |||
N/A |
| |||
| N/A |
'hilbertfir'
— FIR 힐베르트 변환기 필터
응답 유형
유한 임펄스 응답(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' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
N/A |
| N/A | ||
| N/A |
'arbmagfir'
— 임의의 크기 응답을 갖는 FIR 필터
응답 유형
임의 크기 응답을 갖는 유한 임펄스 응답(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' 인수 값 | 설계 옵션 인수 이름 |
---|---|---|---|---|
| ||||
| ||||
| ||||
… | … |
| … | |
| … |
데이터형: char
| string
d
— 디지털 필터
digitalFilter
객체
디지털 필터로, designfilt
에 의해 생성된 digitalFilter
객체로 지정됩니다. 기존 digitalFilter
의 사양을 변경하려면 이 입력값을 사용하십시오.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: FilterOrder=20,CutoffFrequency=0.4
는 저역통과 FIR 필터를 지정하는 데 충분합니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'FilterOrder',20,'CutoffFrequency',0.4
는 저역통과 FIR 필터를 지정하는 데 충분합니다.
일부 이름-값 조합은 유효하지 않습니다. 유효한 조합은 필요한 필터 응답과 설계의 주파수 제약 조건 및 크기 제약 조건에 따라 달라집니다.
FilterOrder
— 필터 차수
양의 정수 스칼라
필터 차수로, 양의 정수 스칼라로 지정됩니다.
데이터형: double
NumeratorOrder
— 분자 차수
양의 정수 스칼라
IIR 설계의 분자 차수로, 양의 정수 스칼라로 지정됩니다.
데이터형: double
DenominatorOrder
— 분모 차수
양의 정수 스칼라
IIR 설계의 분모 차수로, 양의 정수 스칼라로 지정됩니다.
데이터형: double
PassbandFrequency
, PassbandFrequency1
, PassbandFrequency2
— 통과대역 주파수
양의 스칼라
통과대역 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.
'PassbandFrequency1'
은 대역통과 설계나 대역저지 설계의 저역 통과대역 주파수입니다.
'PassbandFrequency2'
는 대역통과 설계나 대역저지 설계의 고역 통과대역 주파수입니다.
데이터형: double
StopbandFrequency
, StopbandFrequency1
, StopbandFrequency2
— 저지대역 주파수
양의 스칼라
저지대역 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.
'StopbandFrequency1'
은 대역통과 설계나 대역저지 설계의 저역 저지대역 주파수입니다.
'StopbandFrequency2'
는 대역통과 설계나 대역저지 설계의 고역 저지대역 주파수입니다.
데이터형: double
CutoffFrequency
, CutoffFrequency1
, CutoffFrequency2
— 6dB 주파수
양의 스칼라
6dB 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.
'CutoffFrequency1'
은 대역통과 설계나 대역저지 설계의 저역 6dB 주파수입니다.
'CutoffFrequency2'
는 대역통과 설계나 대역저지 설계의 고역 6dB 주파수입니다.
데이터형: double
HalfPowerFrequency
, HalfPowerFrequency1
, HalfPowerFrequency2
— 3dB 주파수
양의 스칼라
3dB 주파수로, 양의 스칼라로 지정됩니다. 주파수 값은 나이퀴스트 범위 내에 있어야 합니다.
'HalfPowerFrequency1'
은 대역통과 설계나 대역저지 설계의 저역 3dB 주파수입니다.
'HalfPowerFrequency2'
는 대역통과 설계나 대역저지 설계의 고역 3dB 주파수입니다.
데이터형: double
TransitionWidth
— 천이 영역의 폭
양의 스칼라
힐베르트 변환기의 통과대역과 저지대역 사이의 천이 영역의 폭으로, 양의 스칼라로 지정됩니다.
데이터형: double
Frequencies
— 응답 주파수
벡터
응답 주파수로, 벡터로 지정됩니다. 이 변수를 사용하여 임의 크기 응답의 필터가 원하는 진폭을 갖게 되는 주파수를 나열할 수 있습니다. 주파수는 단조 증가(Monotonically Increasing)해야 하고 나이퀴스트 범위 내에 있어야 합니다. 벡터의 첫 번째 요소는 0 또는 –fs/2(여기서 fs는 샘플 레이트임)여야 하고, 마지막 요소는 fs/2여야 합니다. 샘플 레이트를 지정하지 않으면 designfilt
는 디폴트 값 2Hz를 사용합니다.
데이터형: double
NumBands
— 대역 수
양의 정수 스칼라
다중대역 설계에 포함된 대역 수로, 10보다 크지 않은 양의 정수 스칼라로 지정됩니다.
데이터형: double
BandFrequencies1
, ...
, BandFrequenciesN
— 다중대역 응답 주파수
벡터
다중대역 응답 주파수로, 숫자형 벡터로 지정됩니다. 'BandFrequenciesi'
(여기서 i는 1~'NumBands'
임)는 다중대역 설계의 i번째 대역이 원하는 값 'BandAmplitudesi'
를 갖게 되는 주파수를 포함하는 벡터입니다. 'NumBands'
는 최대 10일 수 있습니다. 주파수는 나이퀴스트 범위 내에 있어야 하고 단조 증가(Monotonically Increasing)하는 순서로 지정되어야 합니다. 인접한 주파수 대역들은 교차점에서 동일한 진폭을 가져야 합니다.
데이터형: double
PassbandRipple
, PassbandRipple1
, PassbandRipple2
— 통과대역 리플
1 (디폴트 값) | 양의 스칼라
통과대역 리플로, 양의 스칼라로 지정됩니다(단위: 데시벨).
'PassbandRipple1'
은 대역저지 설계의 저역 통과대역 리플입니다.
'PassbandRipple2'
는 대역저지 설계의 고역 통과대역 리플입니다.
데이터형: double
StopbandAttenuation
, StopbandAttenuation1
, StopbandAttenuation2
— 저지대역 감쇠량
60 (디폴트 값) | 양의 스칼라
저지대역 감쇠량으로, 양의 스칼라로 지정됩니다(단위: 데시벨).
'StopbandAttenuation1'
은 대역통과 설계의 저역 저지대역 감쇠량입니다.
'StopbandAttenuation2'
는 대역통과 설계의 고역 저지대역 감쇠량입니다.
데이터형: double
Amplitudes
— 원하는 응답 진폭
벡터
임의 크기 응답 필터에 대한 원하는 응답 진폭으로, 벡터로 지정됩니다. 진폭을 선형 단위로 표현합니다. 벡터는 'Frequencies'
와 길이가 동일해야 합니다.
데이터형: double
BandAmplitudes1
, ...
, BandAmplitudesN
— 다중대역 응답 진폭
벡터
다중대역 응답 진폭으로, 숫자형 벡터로 지정됩니다. 'BandAmplitudesi'
(여기서 i는 1~'NumBands'
임)는 다중대역 설계의 i번째 대역에서 원하는 진폭을 포함하는 벡터입니다. 'NumBands'
는 최대 10일 수 있습니다. 진폭을 선형 단위로 표현합니다. 'BandAmplitudesi'
는 'BandFrequenciesi'
와 길이가 동일해야 합니다. 인접한 주파수 대역들은 교차점에서 동일한 진폭을 가져야 합니다.
데이터형: double
DesignMethod
— 설계 방법
'butter'
| 'cheby1'
| 'cheby2'
| 'cls'
| 'ellip'
| 'equiripple'
| 'freqsamp'
| 'kaiserwin'
| 'ls'
| 'maxflat'
| 'window'
설계 방법으로, 문자형 벡터 또는 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
MinOrder
— 최소 차수 패리티
'any'
(디폴트 값) | 'even'
'kaiserwin'
설계의 최소 차수 패리티로, 'any'
또는 'even'
으로 지정됩니다. 'MinOrder'
를 'even'
으로 설정하면 designfilt
함수는 짝수 차수를 갖는 최소 차수를 반환합니다. 'MinOrder'
를 'any'
로 설정하면 반환되는 필터는 짝수 또는 홀수 차수 중 더 작은 차수를 가질 수 있습니다.
데이터형: char
| string
Window
— 윈도우
숫자형 벡터 | 윈도우 이름 | 함수 핸들 | 셀형 배열
윈도우로, 길이가 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
MatchExactly
— 정확히 일치시킬 대역
'stopband'
| 'passband'
| 'both'
정확히 일치시킬 대역으로, 'stopband'
, 'passband'
또는 'both'
로 지정됩니다. 'both'
는 타원 설계 방법에만 사용할 수 있으며 여기서 이 값은 디폴트 값입니다. 'stopband'
는 'butter'
방법과 'cheby2'
방법의 디폴트 값입니다. 'passband'
는 'cheby1'
방법의 디폴트 값입니다.
데이터형: char
| string
PassbandOffset
— 통과대역 오프셋
0 (디폴트 값) | 양의 스칼라
통과대역 오프셋으로, 양의 스칼라(단위: 데시벨)로 지정됩니다. 'PassbandOffset'
은 통과대역의 필터 이득을 지정합니다.
예: 'PassbandOffset',0
은 통과대역에서 단위 이득을 갖는 필터를 생성합니다.
예: 'PassbandOffset',2
는 2dB 또는 1.259의 통과대역 이득을 갖는 필터를 생성합니다.
데이터형: double
ScalePassband
— 통과대역 스케일링
true
(디폴트 값) | false
통과대역 스케일링으로, 논리형 스칼라로 지정됩니다. 'ScalePassband'
를 true
로 설정하면 윈도우 생성(Windowing) 후 필터가 영주파수에서 단위 이득을 갖도록 통과대역이 스케일링됩니다.
예: 'Window',{@kaiser,0.1},'ScalePassband',true
를 사용하면 영주파수에서의 크기 응답이 정확히 0dB인 필터를 지정할 수 있습니다. 'ScalePassband',false
를 지정하는 경우에는 그렇게 되지 않습니다. 이를 확인하려면 fvtool
을 사용하여 필터를 시각화하고 확대하십시오.
데이터형: logical
ZeroPhase
— 영위상
false
(디폴트 값) | true
영위상으로, 논리형 스칼라로 지정됩니다. 'ZeroPhase'
를 true
로 설정하면 결과로 생성되는 필터의 영위상 응답이 항상 양수입니다. 이를 통해 결과에 대해 스펙트럼 분해를 수행하여 최소 위상 필터를 구할 수 있습니다.
데이터형: logical
PassbandWeight
, PassbandWeight1
, PassbandWeight2
— 통과대역 최적화 가중치
1 (디폴트 값) | 양의 스칼라
통과대역 최적화 가중치로, 양의 스칼라로 지정됩니다.
'PassbandWeight1'
은 대역저지 FIR 설계에 대한 저역 통과대역 최적화 가중치입니다.
'PassbandWeight2'
는 대역저지 FIR 설계에 대한 고역 통과대역 최적화 가중치입니다.
데이터형: double
StopbandWeight
, StopbandWeight1
, StopbandWeight2
— 저지대역 최적화 가중치
1 (디폴트 값) | 양의 스칼라
저지대역 최적화 가중치로, 양의 스칼라로 지정됩니다.
'StopbandWeight1'
은 대역통과 FIR 설계에 대한 저역 저지대역 최적화 가중치입니다.
'StopbandWeight2'
는 대역통과 FIR 설계에 대한 고역 저지대역 최적화 가중치입니다.
데이터형: double
Weights
— 최적화 가중치
1 (디폴트 값) | 양의 스칼라 | 벡터
최적화 가중치로, 'Amplitudes'
와 길이가 같은 벡터나 양의 스칼라로 지정됩니다.
데이터형: double
BandWeights1
, ...
, BandWeightsN
— 다중대역 가중치
1 (디폴트 값) | 양의 스칼라 | 벡터
다중대역 가중치로, 양의 스칼라 세트나 벡터 세트로 지정됩니다. 'BandWeightsi'
(여기서 i는 1~'NumBands'
임)는 다중대역 설계의 i번째 대역의 최적화 가중치를 포함하는 스칼라 또는 벡터입니다. 벡터로 지정된 경우, 'BandWeightsi'
는 'BandAmplitudesi'
와 길이가 동일해야 합니다.
데이터형: double
SampleRate
— 샘플 레이트
2 (디폴트 값) | 양의 스칼라
샘플 레이트로, 헤르츠를 단위로 하는 양의 스칼라로 지정됩니다. 정규화 주파수로 작업하려면 'SampleRate'
를 2로 설정하거나 이를 단순히 생략하면 됩니다.
데이터형: double
출력 인수
d
— 디지털 필터
digitalFilter
객체
디지털 필터로, digitalFilter
객체로 반환됩니다.
세부 정보
필터 설계 도우미
불완전하거나 일관되지 않은 설계 파라미터 세트를 지정하면 designfilt
가 필터 설계 도우미를 열도록 제안합니다.
resp
에 대한 인수 설명에, 사용 가능한 모든 응답 유형에 대한 유효한 사양 세트의 전체 목록이 나와 있습니다.
이 도우미는 명령줄에서 designfilt
를 호출하는지 아니면 스크립트 또는 함수에서 호출하는지에 따라 각각 다르게 동작합니다.
2kHz로 샘플링된 신호가 있다고 가정합니다. 650Hz보다 큰 주파수 성분을 억제하는 저역통과 FIR 필터를 설계하라는 요청을 받았습니다. 사양 파라미터로 “차단 주파수”를 사용하려고 합니다. MATLAB 명령줄에 다음 코드를 입력합니다.
Fsamp = 2e3; Fctff = 650; dee = designfilt('lowpassfir','CutoffFrequency',Fctff, ... 'SampleRate',Fsamp);
다음 대화 상자가 화면에 표시되기 때문에 무언가가 잘못된 것 같습니다.
예를 클릭하면 코드 생성을 제안하는 새 대화 상자가 표시됩니다. 이전에 정의한 변수가 예상된 위치에 삽입되었는지 확인합니다.
제공된 옵션 중 일부를 살펴본 후 수정된 필터를 테스트하기로 합니다. 확인을 클릭하면 명령줄에 다음 코드가 표시됩니다.
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)
차단 주파수가 특별히 예리해 보이지 않습니다. 대부분의 주파수에 대해 응답은 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)
차단 주파수가 여전히 예리해 보이지 않습니다. 감쇠량은 실제로 60dB이지만, 900Hz보다 높은 주파수에 적용됩니다.
필터를 입력값으로 사용하여 designfilt
를 다시 불러옵니다.
designfilt(dee)
도우미가 다시 나타납니다.
수락된 주파수와 거부된 주파수 사이의 차이를 좁히려면 필터의 차수를 늘리거나 주파수 제약 조건
을 차단(6dB) 주파수
에서 통과대역 주파수 및 저지대역 주파수
로 변경하십시오. 필터 차수를 10에서 50으로 변경하면 더욱 예리한 필터가 생성됩니다.
dee = designfilt('lowpassfir','FilterOrder',50, ... 'CutoffFrequency',650,'PassbandRipple',1, ... 'StopbandAttenuation',60,'SampleRate',2000); fvtool(dee)
통과대역 주파수와 저지대역 주파수를 각각 600Hz와 700Hz로 설정하는 간단한 실험을 통해 유사한 필터를 얻을 수 있습니다.
dee = designfilt('lowpassfir','PassbandFrequency',600, ... 'StopbandFrequency',700,'PassbandRipple',1, ... 'StopbandAttenuation',60,'SampleRate',2000); fvtool(dee)
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
를 클릭하여 화면에 필터 설계 도우미를 표시합니다.
다음과 같은 문제가 발견되었습니다. 주파수 제약 조건을 지정하지 않았습니다. 또한, 샘플 레이트를 설정하지 않았습니다. 실험해 보면, 주파수 단위를 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에 개발됨R2021b: designfilt
함수는 더 이상 designfilt
를 올바르게 호출하도록 도와주지 않음
R2021b부터 designfilt
함수는 더 이상 스크립트나 함수 내에서 designfilt
를 올바르게 호출하도록 도와주지 않습니다. 이전 릴리스에서 이 함수는 명령줄에서 자동으로 코드를 수정하고 실행했습니다.
코드를 변경할 필요는 없습니다. designfilt
호출에 오류가 있으면 이 함수는 오류를 발생시키고 필터 설계 도우미를 열 수 있는 링크를 표시합니다. 이 도우미를 사용하여 필터를 생성하고 명령줄에 해당 코드를 표시할 수 있습니다. 생성된 filter 객체는 작업 공간에 저장됩니다.
참고 항목
digitalFilter
| double
| fftfilt
| filt2block
| filter
| filtfilt
| filtord
| firtype
| freqz
| FVTool | grpdelay
| impz
| impzlength
| info
| isallpass
| isdouble
| isfir
| islinphase
| ismaxphase
| isminphase
| issingle
| isstable
| phasedelay
| phasez
| single
| ss
| stepz
| tf
| zerophase
| zpk
| zplane
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)