Main Content

dfilt

이산시간 필터

구문

Hd = dfilt.structure(input1,...)

설명

Hd = dfilt.structure(input1,...)structure 유형의 이산시간 필터 Hd를 반환합니다. 각 구조는 하나 이상의 입력값을 받습니다. 입력값 없이 dfilt.structure를 지정하면 디폴트 필터가 생성됩니다.

참고

structuredfilt와 함께 사용해야 합니다.

Hd = [dfilt.structure(input1,...),dfilt.structure(input1,...),...]dfilt 필터를 포함한 벡터를 반환합니다.

구조

dfilt 객체에 사용 가능한 구조가 아래에 나와 있습니다. block 메서드의 대상 블록은 필터 구조에 따라 달라집니다. 대상 블록에 따라 DSP System Toolbox™가 필요할 수 있습니다.

dfilt.structure

설명

realizemdl의 계수 매핑 지원 여부

block 메서드의 대상 필터 블록

dfilt.delay

지연

지원 안 됨

Delay

DSP System Toolbox 필요

dfilt.df1

Direct-Form I

지원됨

Discrete Filter

dfilt.df1sos

Direct-Form I, 2차섹션형(SOS)

지원됨

Discrete Filter

DSP System Toolbox 필요

dfilt.df1t

Direct-Form I 전치

지원됨

Discrete Filter

dfilt.df1tsos

Direct-Form I 전치, 2차섹션형(SOS)

지원됨

Biquad Filter

DSP System Toolbox 필요

dfilt.df2

Direct-Form II

지원됨

Discrete Filter

dfilt.df2sos

Direct-Form II, 2차섹션형(SOS)

지원됨

Discrete Filter

dfilt.df2t

Direct-Form II 전치

지원됨

Discrete Filter

dfilt.df2tsos

Direct-Form II 전치, 2차섹션형(SOS)

지원됨

Biquad Filter

DSP System Toolbox 필요

dfilt.dffir

Direct-Form FIR

지원됨

Discrete FIR Filter

dfilt.dffirt

Direct-Form FIR 전치

지원됨

Discrete FIR Filter

dfilt.dfsymfir

Direct-Form 대칭 FIR

지원됨

Discrete FIR Filter

dfilt.dfasymfir

Direct-Form 반대칭 FIR

지원됨

Discrete FIR Filter

dfilt.fftfir

Overlap-add FIR

지원 안 됨

Overlap-Add FFT Filter

DSP System Toolbox 필요

dfilt.latticeallpass

격자 전역통과

지원됨

지원 안 됨

dfilt.latticear

격자 자기회귀(AR)

지원됨

Allpole Filter

DSP System Toolbox 필요

dfilt.latticearma

격자 자기회귀 이동평균(ARMA)

지원됨

지원 안 됨

dfilt.latticemamax

최대 위상 격자 이동평균(MA)

지원됨

지원 안 됨

dfilt.latticemamin

최소 위상 격자 이동평균(MA)

지원됨

Discrete FIR Filter

dfilt.statespace

상태공간

지원됨

지원 안 됨

dfilt.scalar

스칼라 이득 객체

지원됨

Gain

DSP System Toolbox 필요

dfilt.cascade

직렬 정렬 필터

지원됨

대상 블록은 직렬 시스템의 필터 구조에 따라 달라짐

dfilt.parallel

병렬 정렬 필터

지원됨

대상 블록은 병렬 시스템의 필터 구조에 따라 달라짐

각 구조에 대한 자세한 내용을 보려면 MATLAB® 프롬프트에서 구문 help dfilt.structure를 사용하거나 해당하는 함수 도움말 페이지를 참조하십시오.

메서드

메서드는 필터 파라미터를 다시 지정할 필요 없이 dfilt 객체에 직접 함수를 수행하는 방법을 제공합니다. dfilt 객체에 할당된 변수에 직접 이 메서드를 적용할 수 있습니다.

예를 들어, dfilt 객체 Hd를 생성할 경우 islinphase(Hd)를 사용하여 객체가 선형 위상을 갖는지 확인하거나 h=freqz(Hd)를 사용하여 객체의 주파수 응답 값을 구할 수 있습니다. 이러한 방식으로 아래의 모든 메서드를 사용할 수 있습니다.

참고

변수가 dfilt 필터로 구성된 1차원 배열인 경우 메서드는 배열에 있는 각 객체에 적용됩니다. freqz, grpdelay, impz, is*, order, stepz 메서드만 배열에 적용할 수 있습니다. zplane 메서드는 출력값 없이 사용되는 경우에만 배열에 적용할 수 있습니다.

아래에 나열된 메서드 중 일부는 Signal Processing Toolbox™ 함수와 이름이 같고 작동 방식도 유사합니다. 이를 함수의 오버로드라고 합니다.

사용 가능한 메서드는 다음과 같습니다.

메서드

설명

addstage

cascade 또는 parallel 객체에 단계를 추가합니다. 여기서 단계는 개별 모듈식 필터입니다. dfilt.cascadedfilt.parallel을 참조하십시오.

block

block(Hd)dfilt 객체의 Simulink® 필터 블록을 생성합니다. 대상 필터 블록은 필터 구조에 따라 달라집니다. 이 메서드를 사용하려면 Simulink가 있어야 합니다. 그 외에도 필터 구조에 따라 DSP System Toolbox가 필요할 수 있습니다. 대상 블록과 필터 구조 간의 매핑은 구조 항목을 참조하십시오.

block 메서드는 다음 속성/값을 지정할 수 있습니다.

'MapCoeffstoPorts'는 생성된 블록에 연결된 상수 블록에 필터 계수를 매핑할지를 나타냅니다. 디폴트 값은 'off'입니다. 'MapCoeffstoPorts''on'으로 설정하면 매핑이 켜지고, 상수 블록 파라미터 이름을 정의하는 'CoeffNames' 속성이 활성화됩니다. 'CoeffNames'는 셀형 배열입니다. 디폴트 값은 Direct-Form FIR 필터의 경우 {'Num'}이고, 격자 필터의 경우 {'K'}이며, IIR 필터의 경우 {'Num','Den'}이고, 바이쿼드 필터의 경우 {Num','Den','g'}입니다. 'CoeffNames'에서 정의한 변수는 MATLAB 작업 공간에 생성되고, 필터의 'Arithmetic' 속성과 동일한 데이터 유형을 갖습니다. 같은 이름의 기존 변수가 있는 경우 이를 덮어씁니다. 'Link2Obj''MapCoeffstoPorts' 중 하나를 사용할 순 있지만, 두 개를 동시에 사용할 수는 없습니다.

'InputProcessing'은 샘플 기반 처리 'elementsaschannels', 프레임 기반 처리 'columnsaschannels' 또는 'inherited'를 지정합니다. 디폴트 값은 프레임 기반 처리입니다. DSP System Toolbox가 없는 경우 런타임 오류를 피하기 위해 'InputProcessing' 속성을 명시적으로 'elementsaschannels'로 설정하십시오. 'InputProcessing''inherited'로 설정하면 구조에 관계없이 Digital Filter 블록이 대상이 됩니다.

cascade

직렬로 결합된 두 dfilt 객체를 반환합니다. dfilt.cascade를 참조하십시오.

coeffs

원래 dfilt의 속성 이름과 동일한 속성 이름을 사용하는 필드가 포함된 구조로 필터 계수를 반환합니다.

convert

dfilt 객체의 필터 구조를 다른 필터 구조로 변환합니다.

fcfwrite

필터 계수 ASCII 파일을 작성합니다. 파일에는 단일 필터가 포함되거나 객체로 구성된 벡터가 포함될 수 있습니다. 디폴트 파일 이름은 untitled.fcf입니다.

fcfwrite(Hd,filename)은 현재 작업 디렉터리에 filename이라는 디스크 파일 이름으로 작성됩니다. .fcf 확장자가 자동으로 추가됩니다.

fcfwrite(...,fmt)는 계수를 fmt 형식으로 작성합니다. 여기서 fmt는 다음 중 하나일 수 있습니다.

16진수인 경우 'hex'

10진수인 경우 'dec'

이진 표현인 경우 'bin'

fftcoeffs

dfilt.fftfir로 필터링할 때 사용되는 주파수 영역 계수를 반환합니다.

filter

dfilt 객체를 사용하여 필터링을 수행합니다.

y = filter(Hd,x)Hd 필터를 사용하여 x를 필터링하고, 필터링된 데이터를 y로 반환합니다. 초기 조건 사용에 대한 내용은 필터 상태 사용하기 항목을 참조하십시오. x가 행렬이면 각 열은 독립적인 채널로 필터링됩니다. x가 다차원 배열이면 filter는 첫 번째 비한원소 차원에서 동작합니다.

y = filter(Hd,x,dim)은 차원 dim을 따라 동작합니다. x가 벡터 또는 행렬이고 dim이 1이면 x의 모든 열이 채널입니다. dim이 2이면 모든 행이 채널입니다.

firtype

선형 위상 FIR 필터의 유형(1-4)을 반환합니다.

freqz

주파수 응답을 플로팅합니다. freqz 함수와 달리, 이 dfilt freqz 메서드는 디폴트 길이가 8192입니다.

grpdelay

군지연을 플로팅합니다.

impz

임펄스 응답을 플로팅합니다.

impzlength

임펄스 응답의 길이를 반환합니다.

info

필터 구조, 길이, 안정성, 선형 위상, 그리고 가능한 경우 격자 길이와 사다리 길이 등의 간략한 dfilt 정보를 표시합니다. 설계 방법, 옵션 등에 대한 세부 정보를 표시하려면 info(Hd, 'long')을 사용하십시오. 디폴트 표시 형식은 'short'입니다. 다단 필터(cascadeparallel)의 경우 특정 단계에 대한 내용을 보려면 info(Hd.Stage(x))(여기서 x는 단계의 번호를 나타냄)를 사용하십시오.

isallpass

dfilt 객체가 전역통과 필터에 있는 경우에는 논리값 1(즉, true)을 반환하고, 그렇지 않은 경우에는 논리값 0(즉, false)을 반환합니다.

iscascade

dfilt 객체가 종속 연결된 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isfir

dfilt 객체가 유한 임펄스 응답(FIR)을 갖는 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

islinphase

dfilt 객체가 선형 위상 필터인 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

ismaxphase

dfilt 객체가 최대 위상 필터인 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isminphase

dfilt 객체가 최소 위상 필터인 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isparallel

dfilt 객체가 병렬 단계를 갖는 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isreal

dfilt 객체가 실수 값 계수를 갖는 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isscalar

dfilt 객체가 스칼라인 경우에는 논리값 1을 반환하고, 스칼라가 아닌 경우에는 논리값 0을 반환합니다.

issos

dfilt 객체가 2차섹션(SOS)을 갖는 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

isstable

dfilt 객체가 안정적인 경우에는 논리값 1을 반환하고, 그렇지 않은 경우에는 논리값 0을 반환합니다.

nsections

2차섹션형(SOS) 필터의 섹션 개수를 반환합니다. 다단 필터에 여러 섹션을 갖는 단계가 있을 때 nsections를 사용하면 모든 단계의 총 섹션 개수가 반환됩니다(단일 섹션에 하나의 단계를 갖는 경우 1을 반환함).

nstages

필터의 단계 개수를 반환합니다. 여기서 단계는 개별 모듈식 필터입니다.

nstates

객체의 상태 개수를 반환합니다.

order

필터 차수를 반환합니다. Hd가 하나의 단계를 갖는 필터이면, 차수는 필터를 최소 구현하는 데 필요한 지연 개수로 지정됩니다. Hd가 여러 단계를 가지면, 차수는 전체 필터를 최소 구현하는 데 필요한 지연 개수로 지정됩니다.

parallel

병렬로 결합된 두 개의 dfilt 필터를 반환합니다. dfilt.parallel을 참조하십시오.

phasez

위상 응답을 플로팅합니다.

realizemdl

(Simulink에서만 사용 가능)

realizemdl(Hd)dfilt에 대한 서브시스템 블록 구현이 포함된 Simulink 모델을 생성합니다.

realizemdl(Hd,p1,v1,p2,v2,...)는 지정된 속성 p1, p2 등과 값 v1, v2 등을 사용하여 블록을 생성합니다.

다음과 같은 속성을 사용할 수 있습니다.

'Blockname'은 블록 이름을 지정합니다. 디폴트 값은 'Filter'입니다.

'Destination'은 블록을 현재 Simulink 모델에 추가할지, 새 모델을 만들지 또는 모델의 기존 서브시스템에 블록을 배치할지를 지정합니다. 유효한 값은 'current' 또는 'new'이거나 모델의 기존 서브시스템 이름입니다. 디폴트 값은 'current'입니다.

'OverwriteBlock'realizemdl에서 생성한 기존 블록을 덮어쓸지 아니면 새 블록을 생성할지를 지정합니다. 유효한 값은 'on''off'이며 디폴트 값은 'off'입니다. 참고로 realizemdl에서 생성한 블록만을 덮어씁니다.

다음은 블록 구조를 최적화하는 속성입니다. 'on'을 지정하면 최적화가 활성화되고, 'off'를 지정하면 최적화 없이 블록이 생성됩니다. 다음 각 속성의 디폴트 값은 'on'입니다.

'OptimizeZeros'는 영이득 블록을 제거합니다.

'OptimizeOnes'는 단위 이득 블록을 직접 연결로 대체합니다.

'OptimizeNegOnes'는 가장 가까운 합계 블록에서 부호를 변경해 음수 단위 이득 블록을 대체합니다.

'OptimizeDelayChains'는 종속 연결로 이어진 지연 블록을 알맞은 지연값으로 설정된 하나의 정수 지연 블록으로 대체합니다.

removestage

종속 연결 또는 병렬 dfilt에서 하나의 단계를 제거합니다. dfilt.cascadedfilt.parallel을 참조하십시오.

setstage

종속 연결 또는 병렬 dfilt에서 하나의 단계를 덮어씁니다. dfilt.cascadedfilt.parallel을 참조하십시오.

sos

dfilt를 2차섹션형(SOS) dfilt로 변환합니다. Hd가 단일 섹션을 가지면 반환된 필터는 클래스가 동일합니다.

sos(Hd,flag) 는 2차섹션형(SOS)의 순서를 지정합니다. flag='UP'이면, 첫 번째 행에는 원점에 가장 가까이 있는 극점이 포함되고 마지막 행에는 단위원에 가장 가까이 있는 극점이 포함됩니다. flag='down'이면 섹션은 반대 방향으로 정렬됩니다. 0은 항상 0에 가장 가까운 극점과 쌍을 이룹니다.

sos(Hd,flag,scale) 은 모든 2차섹션형의 분자 계수와 이득의 스케일링을 지정합니다. scale'none', 'inf'(무한대 노름) 또는 'two' (2-노름)일 수 있습니다. 무한대 노름 스케일링을 up 정렬과 함께 사용하면 구현에 오버플로가 발생할 가능성이 최소화됩니다. 2-노름 스케일링을 down 정렬과 함께 사용하면 피크 반올림 잡음이 최소화됩니다.

ss

dfilt를 상태공간으로 변환합니다. 상태공간 모델에 대한 별도의 A,B,C,D 행렬을 보려면 [A,B,C,D]=ss(Hd)를 사용하십시오.

stepz

계단 응답을 플로팅합니다.

stepz(Hd,n)은 계단 응답의 처음 n 개 샘플을 계산합니다.

stepz(Hd,n,Fs)는 시간 샘플을 T = 1/Fs로 분리합니다. 여기서 Fs는 Hz 단위라고 가정합니다.

sysobj

dfilt를 필터 System object로 변환합니다. 지원되는 객체 목록은 함수 도움말 페이지를 참조하십시오. 이 메서드를 사용하려면 DSP System Toolbox가 설치되어 있어야 합니다.

tf

dfilt를 전달 함수로 변환합니다.

zerophase

영위상 응답을 플로팅합니다.

zpk

dfilt를 영점-극점-이득 형태로 변환합니다.

zplane

극점-영점 플롯을 플로팅합니다.

각 메서드에 대한 자세한 내용을 보려면 MATLAB 프롬프트에서 구문 help dfilt/method를 사용하십시오.

속성 보기

다른 객체와 마찬가지로 get을 사용하여 dfilt 속성을 볼 수 있습니다. 특정 속성을 보려면 다음 구문을 사용하십시오.

 get(Hd,'property') 

객체의 모든 속성을 보려면 다음 구문을 사용하십시오.

get(Hd)

속성 변경하기

특정 속성을 설정하려면 다음 구문을 사용하십시오.

set(Hd,'property1',value,'property2',value,...) 

속성 이름은 작은따옴표로 묶어야 합니다.

또는 Object.property를 사용하여 속성값을 가져오거나 설정할 수 있습니다.

b = [0.05 0.9 0.05];
Hd = dfilt.dffir(b);
% Lowpass direct-form I FIR filter
Hd.arithmetic % get arithmetic property
% returns double
Hd.arithmetic = 'single';
% Set arithmetic property to single precision

객체 복사하기

객체의 복사본을 생성하려면 copy 메서드를 사용하십시오.

H2 = copy(Hd)

참고

구문 H2 = Hd를 사용하면 객체 핸들만 복사되고 새 객체가 생성되지는 않습니다.

필터 구조 간에 변환하기

dfilt 객체 Hd의 필터 구조를 변경하려면 다음 구문을 사용하십시오.

Hd2=convert(Hd,'structure_name');

여기서 structure_name은 작은따옴표로 묶은 유효한 구조 이름입니다. Hdcascade 또는 parallel 구조이면 각 단계는 새 구조로 변환됩니다.

필터 상태 사용하기

다음 두 속성이 필터 상태를 제어합니다.

  • states — 필터의 현재 상태를 저장합니다. 필터 적용 전에는 상태가 초기 조건과 일치하고, 필터 적용 후에는 상태가 최종 조건과 일치합니다. df1, df1t, df1sos, df1tsos 구조의 경우 statesfiltstate 객체를 반환합니다.

  • PersistentMemory — 필터 states의 저장 여부를 제어합니다. 디폴트 값은 'false'이며, 이 경우 필터링 전에 초기 조건이 0으로 재설정되고 states 정보가 표시되지 않습니다. PersistentMemory'true'로 설정하면, 필터가 초기 조건을 사용하거나 이전 필터링 작업의 최종 조건을 다음 필터링 작업의 초기 조건으로 재사용할 수 있습니다. 또한 필터 states에 대한 정보도 표시됩니다.

    참고

    states를 설정한 경우 이를 필터링에 사용하고자 하면, 필터를 사용하기 전에 PersistentMemory'true'로 설정해야 합니다.

예제

Direct-Form I 필터를 생성하고 메서드를 사용하여 필터가 안정적인지 확인합니다.

[b,a] = butter(8,0.25);
Hd = dfilt.df1(b,a)

dfilt의 분자 값을 한 라인에 다 표시할 수 없는 경우, 벡터에 대한 설명이 표시됩니다. 이 예제의 특정 분자 값을 확인하려면 다음 구문을 사용하십시오.

get(Hd,'numerator')

또는 다음 구문을 사용합니다.

Hd.numerator

추가 예제는 각 구조의 함수 도움말 페이지를 참조하십시오.

버전 내역

R2006a 이전에 개발됨

참고 항목

함수