Files
matlab/common/lfft.m
T
jens b31f3e7435 - added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
2021-03-22 20:28:22 +00:00

33 lines
1.3 KiB
Matlab
Executable File

% ##################################################################################
% ## Funktion: lfft.m; Fouriertransformation einer reellen Folge ##
% ##################################################################################
%
% function X1 = lfft(x1)
%
% Transformation einer reellen Folge x1(k) der Laenge 2N durch eine
% N-Punkte FFT
% N.B.: x1 muss ein Zeilenvektor sein.
function X1 = lfft(x1)
lx = length(x1);
if rem(lx,2)==1 % Ungerade Anzahl von Datenwerten
disp('WARNING: Eine gerade Anzahl von Datenwerten ist notwendig:')
disp(' das letzte Datum wird nicht verwendet.')
x1(lx) = [];
lx = lx-1;
end
N = lx/2; % Laenge von reellem x1: 2N
kk = 1:N;
y = x1(2*kk-1); % Gl. (6.1.7a)
z = x1(2*kk); % Gl. (6.1.7b)
x = y + j*z; % Gl. (6.1.8)
% Laenge von komplexem x: N
X = fft(x); % Laenge von X: N
X = [X X(1)]; % Laenge von X: N+1
Y = (X + conj(fliplr(X)))/2; % Gl. (6.1.5a)
Z = (X - conj(fliplr(X)))/2/j; % Gl. (6.1.5b)
X1 = Y + exp(-j*pi*(0:N)/N).*Z; % Gl. (6.1.12)
X1 = [X1 fliplr(conj(X1(2:N)))]; % Laenge von X1: 2N
% ##### EOF #####