Skip to main content

What is the Step Size in FFT?

 

In FFT (Fast Fourier Transform), the step size refers to the spacing between consecutive points in the output data after performing the transform. It's often determined by the sampling rate of the signal. The step size is crucial for accurate frequency representation, and smaller step sizes provide finer frequency resolution in the resulting frequency domain representation.


Step Size of a Signal in the Time Domain

Suppose you have a signal sampled at 1000 Hz (sampling rate) for a duration of 1 second. The step size, or the time difference between consecutive samples, is then given by the inverse of the sampling rate:

Step size=1/Sampling rate=1/1000Hz=0.001seconds

If you perform an FFT on this signal, the resulting frequency resolution in the frequency domain will be determined in part by this step size. Smaller step sizes provide a finer frequency resolution.

 

Step Size of a Signal in the Frequency / FFT Domain 

Step Size in the Frequency Domain

The step size in the frequency domain refers to the spacing between adjacent frequency bins in the FFT output. It is determined by the signal's sampling rate and the size of the FFT:

Δf = fs / N

Where:

  • Δf: Frequency step size (frequency resolution).
  • fs: Sampling rate (Hz).
  • N: FFT size (number of bins).

Total Bandwidth

The total bandwidth covered by the FFT is determined by the sampling rate and the Nyquist theorem:

Total Bandwidth = fs / 2

Frequencies above the Nyquist frequency (fs/2) cannot be represented due to aliasing.

Frequency Step Size after FFT

Combining the above, the frequency step size (bin width) in the FFT output is:

Δf = fs / (2N)

Key Observations:

  • Smaller Δf results in higher frequency resolution.
  • To achieve smaller Δf, increase the FFT size (N) or the signal's duration (T).
  • Total bandwidth is inversely proportional to the number of bins (N).

MATLAB Code

% The code is developed by SalimWireless.Com


clc;
clear all;
close all;


% Parameters
fs = 1000; % Sampling frequency (Hz)
T = 1; % Duration (seconds)
N1 = 256; % FFT size for coarse resolution
N2 = 1024; % FFT size for fine resolution
t = 0:1/fs:T-1/fs; % Time vector


% Signal with multiple frequency components
f1 = 50; % Frequency 1 (Hz)
f2 = 60; % Frequency 2 (Hz)
f3 = 200; % Frequency 3 (Hz)
signal = sin(2*pi*f1*t) + sin(2*pi*f2*t) + sin(2*pi*f3*t);


% FFT with coarse resolution (N1)
fft_coarse = fft(signal, N1);
frequencies_coarse = (0:N1-1)*(fs/N1); % Frequency vector
magnitude_coarse = abs(fft_coarse);


% FFT with fine resolution (N2)
fft_fine = fft(signal, N2);
frequencies_fine = (0:N2-1)*(fs/N2); % Frequency vector
magnitude_fine = abs(fft_fine);


% Plotting
figure;


% Coarse Resolution Plot
subplot(2, 1, 1);
plot(frequencies_coarse(1:N1/2), magnitude_coarse(1:N1/2));
title('FFT with Coarse Resolution (N = 256) where step size is 3.906');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;


% Fine Resolution Plot
subplot(2, 1, 2);
plot(frequencies_fine(1:N2/2), magnitude_fine(1:N2/2));
title('FFT with Fine Resolution (N = 1024) where step size is 0.977');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;

Output






Copy the MATLAB Code above from here

Further Reading

People are good at skipping over material they already know!

View Related Topics to







Admin & Author: Salim

profile

  Website: www.salimwireless.com
  Interests: Signal Processing, Telecommunication, 5G Technology, Present & Future Wireless Technologies, Digital Signal Processing, Computer Networks, Millimeter Wave Band Channel, Web Development
  Seeking an opportunity in the Teaching or Electronics & Telecommunication domains.
  Possess M.Tech in Electronic Communication Systems.


Contact Us

Name

Email *

Message *

Popular Posts

MATLAB code for MSK

📘 Overview 🧮 MATLAB Codes 🧮 Theory 🧮 Simulator for MSK 📚 Further Reading  Copy the MATLAB Code from here % The code is developed by SalimWireless.com clc; clear; close all; % Define a bit sequence bitSeq = [0, 1, 0, 0, 1, 1, 1, 0, 0, 1]; % Perform MSK modulation [modSignal, timeVec] = modulateMSK(bitSeq, 10, 10, 10000); % Plot the modulated signal subplot(2,1,1); samples = 1:numel(bitSeq); stem(samples, bitSeq); title('Original message signal'); xlabel('Time (s)'); ylabel('Amplitude'); % Plot the modulated signal subplot(2,1,2); samples = 1:10000; plot(samples / 10000, modSignal(1:10000)); title('MSK modulated signal'); xlabel('Time (s)'); ylabel('Amplitude'); % Perform MSK demodulation demodBits = demodMSK(modSignal, 10, 10, 10000); % Function to perform MSK modulation function [signal, timeVec] = modulateMSK(bits, carrierFreq, baudRate, sampleFreq) % Converts a binary bit sequence in...

Comparisons among ASK, PSK, and FSK | And the definitions of each

📘 Overview 🧮 Simulator 🧮 Noise Sensitivity, Bandwidth, Complexity, etc. 🧮 MATLAB Codes 🧮 Some Questions and Answers 📚 Further Reading Modulation ASK, FSK & PSK Constellation MATLAB Simulink MATLAB Code Comparisons among ASK, PSK, and FSK    Comparisons among ASK, PSK, and FSK   Simulator for Calculating Bandwidth of ASK, FSK, and PSK The baud rate represents the number of symbols transmitted per second. Both baud rate and bit rate are same for binary ASK, FSK, and PSK. Select Modulation Type: ASK FSK PSK Baud Rate or Bit Rate (bps): Frequency Deviation (Hz) for FSK: Calculate Bandwidth Comparison among ASK,  FSK, and PSK Performance Comparison: 1. Noise Sensitivity:    - ASK is the most sensitive to noise due to its r...

BER vs SNR for M-ary QAM, M-ary PSK, QPSK, BPSK, ...

📘 Overview of BER and SNR 🧮 Simulator for m-ary QAM and m-ary PSK 🧮 MATLAB Codes 📚 Further Reading Modulation Constellation Diagrams BER vs. SNR BER vs SNR for M-QAM, M-PSK, QPSk, BPSK, ... What is Bit Error Rate (BER)? The abbreviation BER stands for bit error rate, which indicates how many corrupted bits are received (after the demodulation process) compared to the total number of bits sent in a communication process. It is defined as,  In mathematics, BER = (number of bits received in error / total number of transmitted bits)  On the other hand, SNR refers to the signal-to-noise power ratio. For ease of calculation, we commonly convert it to dB or decibels.   What is Signal the signal-to-noise ratio (SNR)? SNR = signal power/noise power (SNR is a ratio of signal power to noise power) SNR (in dB) = 10*log(signal power / noise power) [base 10] For instance,...

MATLAB Code for BER performance of QPSK with BPSK, 4-QAM, 16-QAM, 64-QAM, 256-QAM, etc

📘 Overview 🧮 MATLAB Codes 🧮 Theory 🧮 Are QPSK and 4-PSK same? 📚 Further Reading   QPSK offers double the data rate of BPSK while maintaining a similar bit error rate at low SNR when Gray coding is used. It shares spectral efficiency with 4-QAM and can outperform 4-QAM or 16-QAM in very noisy channels. QPSK is widely used in practical wireless systems, often alongside QAM in adaptive modulation schemes [Read more...]   MATLAB Code clear all; close all; % Set parameters for QAM snr_dB = -20:2:20; % SNR values in dB qam_orders = [4, 16, 64, 256]; % QAM modulation orders % Loop through each QAM order and calculate theoretical BER figure; for qam_order = qam_orders     % Calculate theoretical BER using berawgn for QAM     ber_qam = berawgn(snr_dB, 'qam', qam_order);     % Plot the results for QAM     semilogy(snr_dB, ber_qam, 'o-', 'DisplayName', sprintf('%d-QAM', qam_order));  ...

Constellation Diagrams of ASK, PSK, and FSK

📘 Overview 🧮 Simulator for constellation diagrams of ASK, FSK, and PSK 🧮 Theory 🧮 MATLAB Codes 📚 Further Reading BASK (Binary ASK) Modulation: Transmits one of two signals: 0 or -√Eb, where Eb​ is the energy per bit. These signals represent binary 0 and 1.    BFSK (Binary FSK) Modulation: Transmits one of two signals: +√Eb​ ( On the y-axis, the phase shift of 90 degrees with respect to the x-axis, which is also termed phase offset ) or √Eb (on x-axis), where Eb​ is the energy per bit. These signals represent binary 0 and 1.  BPSK (Binary PSK) Modulation: Transmits one of two signals: +√Eb​ or -√Eb (they differ by 180 degree phase shift), where Eb​ is the energy per bit. These signals represent binary 0 and 1.    Simulator for BASK, BPSK, and BFSK Constellation Diagrams SNR (dB): 15 Add A...

Differences between Baseband and Passband Modulation Techniques

📘 Overview 🧮 Difference betwen baseband and passband 🧮 Baseband modulation techniques 🧮 Passband modulation techniques 📚 Further Reading   1. Frequency Translation Baseband Modulation: The signal occupies the lower end of the frequency spectrum, close to DC (0 Hz). Noise at these frequencies (such as 1/f noise or flicker noise) can significantly impact the signal.  Passband Modulation: The signal is shifted to a higher frequency range by modulating it with a carrier frequency. This translation can help to avoid low-frequency noise and interference, which are often more prevalent and stronger in the baseband. 2. Bandpass Filtering Baseband Modulation: The filtering of baseband signals is often limited by the need to preserve the low-frequency components of the signal. This makes it difficult to filter out low-frequency noise effectively. Passband Modulation: The modulated signal can be passed through a bandpass filter centered around t...

Theoretical BER vs SNR for binary ASK and FSK

📘 Overview & Theory 🧮 MATLAB Codes 📚 Further Reading Theoretical Ber vs SNR for Amplitude Shift Keying (ASK) The theoretical bit error rate (BER) for binary Amplitude Shift Keying (ASK) as a function of the signal-to-noise ratio (SNR) can be derived using the following expression: If we map the binary signals to 1 and -1 in ASK , the probability of bit error will be: BER = Q(√(2*SNR))   If we map the binary signals to 0 and 1 in ASK , the probability of bit error will be:    BER = Q(√(SNR/2))   Where: Q(x) is the Q-function, which is the tail probability of the standard normal distribution. SNR is the signal-to-noise ratio. N0 is the noise power spectral density. Where Q is the Q function In mathematics Q(x) = 0.5 * erfc(x/ √ 2)   Calculate the Probability of Error using Q-function for ASK: For ASK with amplitudes 0 and 1 : When bit '0' is transmitted, the received signal is noise only . When bit '1' is transmitted, the re...

MATLAB Code for Pulse Amplitude Modulation (PAM) and Demodulation

📘 Overview 🧮 MATLAB Code 1 🧮 MATLAB Code 2 🧮 MATLAB Code for Pulse Amplitude Modulation and Demodulation of Digital data 🧮 Other Pulse Modulation Techniques (e.g., PWM, PPM, DM, and PCM) 📚 Further Reading   Pulse Amplitude Modulation (PAM) & Demodulation MATLAB Script clc; clear all; close all; fm= 10; % frequency of the message signal fc= 100; % frequency of the carrier signal fs=1000*fm; % (=100KHz) sampling frequency (where 1000 is the upsampling factor) t=0:1/fs:1; % sampling rate of (1/fs = 100 kHz) m=1*cos(2*pi*fm*t); % Message signal with period 2*pi*fm (sinusoidal wave signal) c=0.5*square(2*pi*fc*t)+0.5; % square wave with period 2*pi*fc s=m.*c; % modulated signal (multiplication of element by element) subplot(4,1,1); plot(t,m); title('Message signal'); xlabel ('Time'); ylabel('Amplitude'); subplot(4,1,2); plot(t,c); title('Carrier signal'); xlabel('Time'); ylabel('Amplitude'); sub...