Main Content

입력 신호에 저역통과 필터 적용하기

샘플 레이트를 20kHz로 가정하고, 3dB 주파수 2.5kHz를 갖는 4차 버터워스 필터를 생성합니다. 코드를 생성하려면 butter의 필터 계수는 상수여야 합니다.

type ButterFilt
function output_data=ButterFilt(input_data) %#codegen
[b,a]=butter(4,0.25);
output_data=filter(b,a,input_data);
end

버터워스 필터를 사용하여 잡음이 있는 사인파에 저역통과 필터링을 수행합니다.

t = transpose(linspace(0,pi,10000));
x = sin(t) + 0.03*randn(numel(t),1);

버터워스 필터를 사용하여 잡음이 있는 사인파를 필터링합니다. 필터링된 신호를 플로팅합니다.

fx = ButterFilt(x);
plot(fx)

Figure contains an axes object. The axes object contains an object of type line.

codegen 명령을 실행하여 C 소스 코드 ButterFilt.c와 MEX 파일을 얻습니다.

codegen ButterFilt -args {zeros(10000,1)} -o ButterFilt_mex -report
Code generation successful: To view the report, open('codegen/mex/ButterFilt/html/report.mldatx')

C 소스 코드에는 4차 버터워스 필터에 대한 5개의 분자 계수와 분모 계수가 정적 상수로 포함되어 있습니다. MEX 파일을 사용하여 필터를 적용합니다. 필터링된 신호를 플로팅합니다.

output_data = ButterFilt_mex(x);
hold on
plot(output_data)
hold off

Figure contains an axes object. The axes object contains 2 objects of type line.