-
Purpose
This app is for zooming FFT to analyze a portion of a spectrum at high resolution.
-
Installation
Download the file Zoom FFT.opx, and then drag-and-drop onto the Origin workspace. An icon will appear in the Apps gallery window.
-
Operation
Make the worksheet with signal data be active, then click the app icon from the Apps gallery window. Then a dialog will pop up. In the dialog, there are some key settings, including interval, range to zoom, zoom factor, etc., change the values accordingly, and optionally change other parameters as you need, then click OK button to get the final results.
-
Dialog Setings
-
Input: This is for specifying the input signal, and complex is supported.
-
Data Domain: Time and Frequency domains are available, and you have to select the correct doamin according to your signal.
-
Time Domain Settings: The settings for time domain data include:
-
Data Time Unit: By default, time unit is second. If you data&rsquos time unit is not second, you can change it, and available units include Microsecond, Millisecond and Second.
-
Data Time Interval: This is sampling interval. If Auto is checked, the interval is computed from the time data.
-
Frequency Range to Zoom: This branch is used to specify the frequency range you are interested in and want to zoom.
-
Full Frequency Range: This is for showing the available full range of frequency of the signal.
-
Start: Specify the start frequency of interest range.
-
Stop: Specify the stop frequency of interest range.
-
Zoom Factor Specify the zoom factor for performing zoom fft.
-
Multirate FIR Decimation Filter: This branch is for settings of multirate FIR decimation filter.
-
Method: Method for performing zoom fft.
-
Half-Polyphase Length: Specify the half-polyphase length for designing multirate FIR filter.
-
Stopband Attenuation (dB): Specify stopband attenuation for designing multirate FIR filter.
-
Times to Eliminate Transient: To eliminate the FIR transient response, the decimation filter will go through for times, and this is to specify how many times.
-
Frequency Domain Settings: The settings for frequency domain data include:
-
Data Frequency Unit: You can use the correct unit according to your frequency data, and options include Hz, KHz and MHz.
-
Data Frequency Interval: This is to specify the frequency interval. If Auto is checked, it is calculated from the frequency data.
-
Time Range to Zoom: This branch is used to specify the time range you are interested in and want to zoom.
-
Frequency Conversion Factor: During analysis, you can choose a factor to convert the frequency. Then the time range can be in the suitable unit.
-
Full Time Range: Show available full range of time of the signal.
-
Start: Specify the start time of interest range.
-
Stop: Specify the stop time of interest range.
-
Zoom Factor: Specify the zoom factor for performing zoom fft.
-
Butterworth Digital Filter Order Specify order of Butterworth digital filter.
-
Result Data Sheet: Specify where to output the result data.
-
OK and Cancel Buttons: Click OK button to perform zoom fft accordingly to the dialog settings and close dialog, and click Cancel button to close the dialog only.
-
Algorithms (Python library scipy is used)
-
Time Domain
-
For Mixer Approach
-
Design a multirate FIR decimation filter to get filter coefficients, which is used for lowpass and downsampling the signal.
-
Expand the original signal by the specified times, and then multiply exp(-2j*pi*Fc*i*Fs), where Fc is the center frequency of the interested frequency range, and Fs is the sampling rate, and i is the sample index (0 based). That will mix the signal down to DC.
-
Filter the mixed signal by FIR decimator (using the filter coefficients from step 1).
-
Peform FFT on the filtered signal, and shift zero-frequency component to center of spectrum.
-
For Bandpass Sampling
-
Design a multirate FIR decimation filter to get filter coefficients.
-
Multiply the filter coefficients with exp(2j*pi*Fc*i*Fs), where Fc is the center frequency of the interested frequency range, and Fs is the sampling rate, and i is the coefficient index.
-
Expand the original signal by the specified times, and then filter it by using the coefficients generated in step 2.
-
Perform FFT on the filtered signal, and shift zero-frequency component to center of spectrum.
-
Frequency Domain
-
Design a Butterworth lowpass filter using the specified order, and get the transfer function coefficients. And the normalized cutoff frequency is given by Wp=(TimeStop / ZoomFactor + TimeStart) / TimeStop.
-
Multiply the original signal by exp(-2j*pi*TimeStart*Freq[i]), where Freq is the frequency data, and i is the frequency index.
-
Filter the signal from step 2, by using the transfer function coefficients from step 1.
-
Perform FFT on the filtered signal from step 3.