Analiza harmonicznych 143
• wyszukanie amplitudy harmonicznej 50 Hz,
• odniesienie amplitud harmonicznych do amplitudy harmonicznej 50 Hz,
• wykres rozkładu harmonicznych.
function [f,harm]=aharm(xh,fp)
I [f,harm]=aharm(xh,fp)
$ xh - wektor odkształconego sygnału l fp - częstotliwość próbkowania % f - częstotliwości w punktach transformaty I harm - amplitudy harmonicznych
I odniesione do amplitudy harmonicznej 50 Hz
fprintf('\n [f,harm]=aharm(xh,fp)');
N=fp; % wymagana dlugosc wektora X
fprintf( 1 \ częstotliwość próbkowania fp=N=%f Hz',N); fprintf('\n UWAGA! N musi byc parzyste'); nxh = length(xh); % liczba danych w sygnale xh fprintf('\n liczba danych w sygnale wynosi:'); fprintf('\n nxh=length(xh)=%d',nxh);
I
if nxh < N
fprintf ( ' \n Uwaga ! ' ) ;
fprintf('\n *** nxh=%d < N=%d ***',nxh,N); fprintf('\n Liczba danych w sygnale nxh'); fprintf('\n jest mniejsza od fp = N');
fprintf('\nBrakujace uzupełniono zerami xh(nxh+l:N)=0');
xh(nxh+l:N)=0 ;
end
if nxh > N
fprintf('\n Uwaga!');
fprintf('\n *** nxh=%d > N=%d',nxh,N);
fprintf(’\n Liczba danych w syngale nxh');
fprintf('\n jest większa od fp = N');
fprintf('\n Do transformacji elementy X=xh(l:N)');
end
X=xh(l:N); % dlugosc wektora x musi byc równa N harm= [ ] ;
fprintf('\n Wywołanie N-punktowej transformacji Fouriera'); fprintf (' \n Xh=fft(X,N), przy N=%d', N) ;
i transformata Fouriera wydzielonej części sygnału X=xh(l:N)
Xh = f f t (X , N) ; fN=N/2; n = N/2 + l;
fprintf(1\n Czest. Nyąuista fN = N/2 = %8.2f Hz',fN); fprintf('\n odpowiada punktowi transformaty n = N/2+1 =%d',n); %rozklad amplitudy harmonicznych harm=sqrt(Xh.*conj(Xh) )/N;
% częstotliwość w poszczególnych punktach transformaty f = fp/N*(0:fN);
% przeniesienie amplitud czest. ujemnych na czest. dodatnie