function data = qifft(data); % QIFFT Inverse Fourier transform one-sided frequency domain data % % QIFFT computes the inverse Fourier transform of one-sided frequency % domain data produced by QFFT, QCONDITION, and QSCANCONDITION. The % frequency domain data are assumed to extend from zero frequency to % the Nyquist frequency. As a result the frequency domain data are of % length N / 2 + 1 while the time domain data are of length N. % % usage: % % timeDomainData = qifft(frequencyDomainData); % % frequencyDomainData cell array of one-sided frequency domain data % % timeDomainData cell array of time domain data % % See also QFFT, QCONDITION, and QSCANCONDITION. % Shourov K. Chatterji % shourov@ligo.mit.edu % $Id: qifft.m,v 1.1 2006/10/05 17:00:14 shourov Exp $ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % process command line arguments % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % check for sufficient command line arguments error(nargchk(1, 1, nargin)); % force cell array of data if ~iscell(data), data = mat2cell(data, size(data, 1), size(data, 2)); end % force one dimensional cell array data = data(:); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % validate command line arguments % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % determine number of channels numberOfChannels = length(data); % force row vectors for channelNumber = 1 : numberOfChannels, data{channelNumber} = data{channelNumber}(:).'; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % inverse fast fourier transform % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % inverse Fourier transform for channelNumber = 1 : numberOfChannels, data{channelNumber} = real(ifft([data{channelNumber} ... conj(fliplr(data{channelNumber}(2 : end - 1)))])); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % return % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % return to calling function return;