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
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);
hacer casos especiales
if (a==0), Faf = f; retorno; fin;
if (a==2), Faf = flipud(f); fin;
if (a==1), Faf); (shft, 1) = fft(f(shft))/sN; fin
if (a==3), Faf(shft, 1) = ifft(f(shft))*sN ; retorno; fin
reducir al intervalo 0,5 lt; a lt; /p>
if (agt; 1.5), a = a-1; f(shft, 1) = fft(f(shft))/sN; , a = a 1; f(shft, 1) = ifft(f(shft))*sN; finaliza el caso general para 0,5 lt; = a*pi/2;
tana2 = tan(alfa/2);
sina = sin(alfa);
f = [ceros(N -1, 1); interp(f); zeros(N-1, 1)];
premultiplicación de chirrido
chrp = exp(-i*pi/N*tana2/ 4*(-2*N 2:2*N-2)'.^2);
f = chrp.*f;
convolución 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 después de la 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);
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)
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 );