생성된 C 코드를 사용하여 수정된 주기도 계산하기
윈도우를 사용하여 입력 신호의 수정된 주기도 PSD(파워 스펙트럼 밀도) 추정값을 반환하는 함수 periodogram_data.m
을 만듭니다. 함수는 이산 푸리에 변환 점의 개수를 입력 신호의 길이와 동일하게 지정합니다.
type periodogram_data
function [pxx,f] = periodogram_data(inputData,window) %#codegen nfft = length(inputData); [pxx,f] = periodogram(inputData,window,nfft); end
codegen
(MATLAB Coder)을 사용하여 MEX 파일 을 생성합니다.
함수의
%#codegen
지시문은 이 MATLAB® 코드가 코드 생성을 위한 코드임을 나타냅니다.-args
옵션은 MEX 파일에 대한 입력값의 크기, 클래스, 실수/복소수 여부를 정의하는 예제 인수를 지정합니다. 예를 들어,inputData
를 1024×1 배정밀도 확률 벡터로 지정하고window
를 길이가 1024인 해밍 윈도우로 지정합니다. 이후 MEX 함수를 호출할 때 1024개 샘플을 갖는 입력 신호와 윈도우를 사용하게 됩니다.MEX 함수에 다른 이름을 지정하려면
-o
옵션을 사용하십시오.코드 생성 리포트를 확인하려면
codegen
명령 끝에-report
옵션을 추가하십시오.
codegen periodogram_data -args {randn(1024,1),hamming(1024)}
Code generation successful.
periodogram 함수와 생성한 MEX 함수를 사용하여 1024개 샘플을 갖는 잡음이 있는 정현파의 PSD 추정값을 계산합니다. rad/sample의 정규화 정현파 주파수와 핸 윈도우를 지정합니다. 두 추정값을 플로팅하여 두 값이 일치하는 것을 확인합니다.
N = 1024; x = 2*cos(2*pi/5*(0:N-1)') + randn(N,1); periodogram(x,hann(N)) [pxMex,fMex] = periodogram_data(x,hann(N)); hold on plot(fMex/pi,pow2db(pxMex),':','Color',[0 0.4 0]) hold off grid on legend('periodogram','MEX function')