Mercurial > hg > ishara
annotate dsp/mag_phase_split.m @ 32:c3b0cd708782
Imported core dsp tools.
author | samer |
---|---|
date | Sun, 20 Jan 2013 13:48:47 +0000 |
parents | |
children |
rev | line source |
---|---|
samer@32 | 1 function o=mag_phase_split(N) |
samer@32 | 2 % mag_phase_split - arrow to get FFT and do mag/phase split |
samer@32 | 3 % |
samer@32 | 4 % mag_phase_split :: |
samer@32 | 5 % N:natural ~'frame size' |
samer@32 | 6 % -> arrow( {[[N,L]]}, {[[M,L]], [[M,L]]},empty) :- M=dftbins(N). |
samer@32 | 7 |
samer@32 | 8 bins=1+floor(N/2); |
samer@32 | 9 singles=1:ceil(N/2):bins; |
samer@32 | 10 o=arr(@mps); |
samer@32 | 11 |
samer@32 | 12 function [S,P]=mps(X) |
samer@32 | 13 Y=fft(X,N); |
samer@32 | 14 Z=Y(1:bins,:); |
samer@32 | 15 M=abs(Z); |
samer@32 | 16 P=Z./M; % get complex phases of components. |
samer@32 | 17 S=M*sqrt(2/N); % sqrt of double of total power per band |
samer@32 | 18 S(singles,:)=S(singles,:)/sqrt(2); % undo double counting of singletons |
samer@32 | 19 end |
samer@32 | 20 end |
samer@32 | 21 |