matlab-design-ofdm-system

Design and simulate custom OFDM systems in MATLAB using ofdmmod and ofdmdemod.

995|122|Updated Apr 3, 2026
One-click install
npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-ofdm-system
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: matlab-design-ofdm-system
Source: https://github.com/matlab/matlab-agentic-toolkit/tree/main/skills-catalog/wireless-communications/matlab-design-ofdm-system
Command: npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-design-ofdm-system

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Default MATLAB patterns for OFDM (direct ifft/fft, awgn with 0 dBW power, missing symOffset) produce subtly incorrect results. This Skill enforces the correct calling conventions for ofdmmod, ofdmdemod, ofdmChannelResponse, and ofdmEqualize so OFDM transmitter and receiver simulations are accurate.

Core Features & Use Cases

  • Correct OFDM Modulation: Always uses ofdmmod/ofdmdemod instead of direct IFFT/FFT, with proper subcarrier allocation, null/pilot indices, and symOffset handling.
  • Accurate SNR and Noise Handling: Computes explicit signal power (nActiveSC/nFFT^2) for awgn and uses convertSNR for per-subcarrier SNR, wideband SNR, and Eb/No conversions.
  • Fading Channels and Equalization: Configures comm.RayleighChannel/comm.RicianChannel with PathGainsOutputPort, computes channel response via ofdmChannelResponse, and equalizes with ofdmEqualize.
  • Synchronization and Coding: Covers Schmidl-Cox timing, CFO estimation with frequencyOffset, pilot-based phase tracking, and LDPC coding with ldpcEncode/ldpcDecode.
  • Use Case: Build a WiFi-like 64-FFT OFDM link with pilots, Rayleigh fading, MMSE equalization, and rate-1/2 LDPC coding, then measure coded BER versus per-subcarrier SNR.

Quick Start

Ask your AI agent to design an OFDM transmitter and receiver in MATLAB with a specified FFT size, cyclic prefix, modulation order, and channel model.

Frequently Asked Questions about matlab-design-ofdm-system

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I design an OFDM system in MATLAB?

Use ofdmmod for modulation and ofdmdemod for demodulation instead of direct ifft/fft calls. These functions handle CP insertion and removal, ifftshift/fftshift subcarrier ordering, and null/pilot subcarrier management, avoiding silent subcarrier mapping errors.

Why is awgn adding too much noise to my OFDM signal?

ofdmmod output power is not 1W; it equals nActiveSC/nFFT^2 due to MATLAB's 1/N IFFT normalization. Calling awgn(x, snr, 0) assumes unit power and adds far too much noise. Compute sigPow = 10*log10(nActiveSC/nFFT^2) and pass it explicitly.

How do I equalize OFDM over a Rayleigh fading channel in MATLAB?

Configure comm.RayleighChannel with PathGainsOutputPort=true, then compute the per-subcarrier response with ofdmChannelResponse using the path gains and info(channel).ChannelFilterCoefficients. Pass the result to ofdmEqualize with Algorithm="mmse".

Does this skill support 5G NR or Wi-Fi standard waveforms?

No. This skill covers custom non-standard OFDM only. For standards-specific waveforms, use 5G Toolbox for 5G NR, WLAN Toolbox for Wi-Fi, LTE Toolbox for 4G/LTE, or Satellite Communications Toolbox for satellite links.

Which MATLAB version do I need for OFDM channel estimation functions?

ofdmChannelResponse requires R2023a and ofdmEqualize requires R2022b. Pilot-based estimation with ofdmPilotConfig and ofdmChannelEstimate requires R2026a, while ldpcPCM requires R2025a. Call version('-release') to select the appropriate API path.

Why does ofdmEqualize give wrong results with my channel estimate?

With default DataFormat="3-D", passing hEst as [nSC x nSym] is misinterpreted because dimension 2 is read as transmit streams. Reshape time-varying estimates to [(nSC*nSym) x Ns x Nr] using reshape(hEst, [], Ns, Nr) before equalizing.