Red de conocimiento de abogados - Derecho de sociedades - Transformada fraccionaria de Fourier

Transformada fraccionaria de Fourier

función Faf = frft(f, a)

% La Transformada Fraccionada de Fourier rápida

% entrada: f = muestras de la señal

% a = potencia fraccionaria

% de salida: Faf = transformada fraccional de Fourier rápida

error(nargchk(2, 2, nargin));

f = f(:);

N = longitud(f);

shft = rem((0:N-1)+fix(N/2),N)+1 ;

sN = sqrt(N);

a = mod(a,4);

% hacen casos especiales

if (a==0), Faf = f; fin;

if (a==2), Faf = flipud(f); a==1), Faf(shft,1) = fft(f(shft))/sN; fin

if (a==3), Faf(shft,1) = ifft( f(shft))*sN; return; end

% reducir al intervalo 0.5 < a < 1.5

if (a>2.0), a = a-2; (f); fin

if (a>1.5), a = a-1; f(shft,1) = fft(f(shft))/sN; if (a<0.5), a = a+1; f(shft,1) = ifft(f(shft))*sN; end

% el caso general para 0.5 < a < 1.5

alfa = a*pi/2;

tana2 = tan(alfa/2);

sina = sin(alfa);

f = [ceros(N-1,1) ; interp(f) ; ceros(N-1,1)];

% premultiplicación de chirrido

chrp = exp(-i) *pi/N*tana2/4*(-2*N+2:2*N-2)'.^2);

f = chrp.*f;

% de convolución de chirrido

c = pi/N/sina/4;

Faf = fconv(exp(i*c*(-(4*N-4):4*N -4)'.^2),f);

Faf = Faf(4*N-3:8*N-7)*sqrt(c/pi);

% chirrido post multiplicación

Faf = chrp.*Faf;

% constante de normalización

Faf = exp(-i*(1-a)*pi/ 4)*Faf(N:2:end-N+1);

función xint=interp(x)

% interpolación sinc

N = longitud (x);

y = ceros(2*N-1,1);

<

p>y(1:2:2*N-1) = x;

xint = fconv(y(1:2*N-1), sinc([-(2*N-3) :(2*N-3)]'/2));

xint = xint(2*N-2:end-2*N+3);

función z = fconv(x,y)

% de convolución por fft

N = longitud([x(:);y(:)])-1;

P = 2^nextpow2(N);

z = ifft( fft(x,P).* fft(y,P));

z = z(1: N);