Generated banner for Matlab Design Radar
Generated logo for Matlab Design Radar

Matlab Design Radar

MathWorksOfficialCreated by MathWorks

  • Skill
  • Tool integration
  • Science and research
  • BSD-2-Clause
  • No issues found

From the author

Launch and control the MATLAB Radar Designer app programmatically via MCP. Use when designing radar systems, configuring parameters, comparing radar types, analyzing performance metrics, or managing radar design sessions.
— the description by MathWorks

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides an interface to the MATLAB Radar Designer app, allowing users to design, configure, and analyze radar systems directly through an AI agent. It supports tasks such as setting radar parameters, managing design sessions, comparing different radar types, and performing range auto-tuning. The skill leverages a set of wrapper scripts to interact with the app, ensuring that all design requirements and performance metrics are handled according to standard engineering practices.

What it does

  • Launches and manages Radar Designer app sessions.
  • Configures radar, target, and environment parameters using SI units.
  • Performs range auto-tuning to meet specific performance objectives.
  • Compares multiple radar designs side-by-side.
  • Exports analysis scripts and reports for further MATLAB processing.
  • Validates design performance against defined requirements.

When to use it

  • When designing or configuring a new radar system.
  • When comparing the performance of different radar types or configurations.
  • When analyzing how environmental factors like rain affect detection range.
  • When you need to verify if a radar design meets specific range or accuracy requirements.
  • When you need to export radar analysis scripts for further simulation.

Advantages

  • Automates complex radar design workflows within the MATLAB environment.
  • Ensures consistent parameter configuration using SI units.
  • Provides structured performance reporting with pass/fail status.
  • Simplifies multi-radar comparison and session management.
  • Integrates directly with MATLAB's powerful analysis and export tools.

Usage examples

“Design a tracking radar at 5 GHz with 2 MW peak power at 1500 km range for a 1 sq meter target.”
The agent initializes the Radar Designer, configures the tracking radar template with the specified frequency, power, and target parameters, performs range auto-tuning, and reports the performance metrics.
“Compare airport radar performance at 2.8 GHz vs 5.6 GHz for a 10 sq meter target at 150 km.”
The agent sets up the airport radar, clones the configuration, adjusts the frequencies for each, runs the analysis, and presents a comparison table showing the performance metrics for both.
“Set up a weather radar and show how heavy rain (16 mm/hr) degrades detection range.”
The agent configures a weather radar template, sets the environment to 16 mm/hr rain, and provides a summary of how this impacts the system's detection capabilities.
“Export a detectability analysis script for my current radar design.”
The agent triggers the export command for the detectability analysis, which generates and opens the corresponding MATLAB script for the user.

Install

Documentation by MathWorks

Radar Designer MCP Control

Launch and control the MATLAB Radar Designer app programmatically via MCP. Use this skill when a user asks about radar design parameters, wants to configure a radar system, compare radar types, analyze radar performance, or visualize radar metrics interactively in the Radar Designer app.

On Entry

When this skill is first invoked without a specific user request, present the following example prompts to inspire the user:

  1. Design a tracking radar at 5 GHz with 2 MW peak power at 1500 km range for a 1 sq meter target

  2. Compare airport radar performance at 2.8 GHz vs 5.6 GHz — which can achieve 150 km range for a 10 sq meter target?

  3. Set up a weather radar and show how heavy rain (16 mm/hr) degrades detection range

  4. Configure an automotive radar at 77 GHz with electronic scanning for 100 meters range

  5. Add a 200 km max range requirement to my current radar design and check if it meets the objective

Then wait for the user to type their own radar design question.

IMPORTANT

  • Never generate MATLAB scripts for the user that call the wrapper functions directly. These are for the agent's internal use only. When the user asks for a script, use only the built-in export commands via radarDesignerExport.

  • When greeting the user, simply ask about their radar design goals (type, frequency, power, requirements) without referencing the underlying mechanism.

When to Use

  • User asks to design, configure, or analyze a radar system

  • User wants to launch or open the Radar Designer app

  • User asks to change radar parameters (frequency, power, antenna, etc.)

  • User wants to compare different radar types (tracking, airport, airborne, etc.)

  • User asks about radar performance metrics (max range, SNR, detection probability, etc.)

  • User wants to load or save a radar design session (.mat file)

  • User asks about target or environment configuration for radar analysis

  • User wants to set requirements/objectives for a radar design

When NOT to Use

  • User asks about general MATLAB programming unrelated to radar design

  • User wants to use Radar Toolbox functions directly (without the Radar Designer app)

  • User asks about Simulink radar models or Phased Array System Toolbox without the app

  • User wants to create radar waveforms or signals outside the app context

  • User asks about radar theory or equations without wanting to use the app

Prerequisites

  • MATLAB MCP server must be running and connected

  • The mcp__matlab__evaluate_matlab_code tool must be available

  • The Radar Toolbox must be installed in the MATLAB instance

  • The skill's scripts/ directory must be on the MATLAB path (set via project_path)

Code Reference

Consult code-reference.md for detailed code patterns — including multi-radar comparison, session management, export, and range auto-tuning examples. The patterns below are summaries; code-reference.md is authoritative.


Wrapper Scripts

All Radar Designer operations go through 5 p-coded wrapper scripts in scripts/. Always set project_path to the skill's root directory when calling mcp__matlab__evaluate_matlab_code so the scripts are on the MATLAB path.

radarDesignerSession — App lifecycle and sessions
ActionCallReturns
Launch apph = radarDesignerSession('launch')App handle h
Reuse existingh = radarDesignerSession('launch', h)Same h if valid
Start newradarDesignerSession('startNew', h, templateName)—
Save sessionradarDesignerSession('save', h, filePath)—
Load sessionradarDesignerSession('load', h, filePath)—

Templates: 'AirborneRadarSpec', 'AirportRadarSpec', 'AutomotiveRadarSpec', 'TrackingRadarSpec', 'WeatherRadarSpec'

radarDesignerParam — Get/set parameters and requirements
ActionCallReturns
Set parameterradarDesignerParam(h, 'set', specType, propName, value)—
Get parameterval = radarDesignerParam(h, 'get', specType, propName)Property value
Set requirementradarDesignerParam(h, 'setRequirement', reqIndex, propName, value)—

specType: 'Radar', 'Target', 'Environment'

radarDesignerResults — Read results and auto-tune
ActionCallReturns
Read resultsT = radarDesignerResults(h, 'read')Table (16 metrics)
Auto-tune rangeresult = radarDesignerResults(h, 'autoTune', range_m)Struct

Results table columns: Metric, Units, Threshold, Objective, Result_<radarName>, Status_<radarName> (PASS/WARN/FAIL)

Auto-tune result fields: requestedRange_km, achievedRange_km, ratio, converged

radarDesignerMultiRadar — Multiple radar management
ActionCallReturns
Add templateradarDesignerMultiRadar(h, 'add', templateName)—
Clone currentradarDesignerMultiRadar(h, 'clone')—
Select by indexradarDesignerMultiRadar(h, 'select', index)—
Delete currentradarDesignerMultiRadar(h, 'delete')—
List namesnames = radarDesignerMultiRadar(h, 'names')Cell array

Add templates: 'AirborneRadar', 'AirportRadar', 'AutomotiveRadar', 'TrackingRadar', 'WeatherRadar'

radarDesignerExport — Built-in export

The second argument must be an export type string — not a file path. Passing a file path (e.g., fullfile(...)) will error.

App Menu ItemCallDescription
Export Detectability Analysis MATLAB ScriptradarDesignerExport(h, 'detectability')SNR vs Range, Pd vs Range, Environmental Losses, Link Budget
Export Vertical Coverage MATLAB ScriptradarDesignerExport(h, 'coverage')Vertical coverage plot
Generate Metrics ReportradarDesignerExport(h, 'report')Formatted report of numeric metrics
Export Radar Data Generator MATLAB ScriptradarDesignerExport(h, 'rdg')Simulate radar detecting target in dynamic scenario (no refraction)
— Effective Earth Radius ModelradarDesignerExport(h, 'rdg', 'effectiveearth')Requires non-free-space, curved Earth, std/low/mid/high latitude atmosphere
— CRPL Exponential Reference ModelradarDesignerExport(h, 'rdg', 'crpl')Same environment requirements as Effective Earth

Workflow

Step 1: Launch the App
h = radarDesignerSession('launch');

Always check if h already exists:

if ~exist('h','var') || ~isvalid(h)
    h = radarDesignerSession('launch');
end
Step 2: Select a Radar Template
radarDesignerSession('startNew', h, 'TrackingRadarSpec');
Step 3: Set Parameters
radarDesignerParam(h, 'set', 'Radar', 'Frequency', 5e9);     % 5 GHz
radarDesignerParam(h, 'set', 'Radar', 'PeakPower', 2e6);     % 2 MW
radarDesignerParam(h, 'set', 'Target', 'RCS', 1);             % 1 m²
radarDesignerParam(h, 'set', 'Environment', 'RainRate', 4);   % 4 mm/hr

All values in SI units: frequency in Hz, power in W, range in m, etc.

Step 3a: Map User Objectives to Requirements

When the user states a performance goal, set it as the Threshold on the matching requirement.

User saysReq IndexExample call
"150 km range"2 (MaxRange)radarDesignerParam(h, 'setRequirement', 2, 'Threshold', 150e3)
"10 m range resolution"6 (RangeResolution)radarDesignerParam(h, 'setRequirement', 6, 'Threshold', 10)
"0.5° azimuth accuracy"10 (AzimuthAccuracy)radarDesignerParam(h, 'setRequirement', 10, 'Threshold', 0.5)
"100 m/s first blind speed"7 (FirstBlindSpeed)radarDesignerParam(h, 'setRequirement', 7, 'Threshold', 100)
"5 km min range"4 (MinRange)radarDesignerParam(h, 'setRequirement', 4, 'Threshold', 5e3)

Set both Threshold and Objective to the same value unless the user distinguishes a minimum acceptable (Threshold) from a desired goal (Objective).

Step 3b: Range Auto-Tuning (MANDATORY when user specifies a range)

If the user specifies a target range, you MUST run auto-tune BEFORE reading/reporting results:

result = radarDesignerResults(h, 'autoTune', 300e3);  % 300 km target

The auto-tune adjusts peak power (and gain if needed) so the achieved range is within ±15% of the user's request. It also sets the MaxRange requirement threshold to the user's requested range.

Skip this step ONLY if the user did not mention a specific range target.

Step 4: Read Analysis Results
T = radarDesignerResults(h, 'read');

The returned table has 16 rows (one per metric) with columns: Metric, Units, Threshold, Objective, and per-radar Result_<name> and Status_<name> columns.

Status values: PASS (meets objective), WARN (between threshold and objective), FAIL (does not meet threshold).

Step 5: Multi-Radar, Sessions, Export

See code-reference.md for complete patterns.


Complete Property Reference

Radar Properties (Settable)
Waveform
PropertyDescriptionUnitsExample
FrequencyCarrier frequencyHz3e9
PulseBandwidthPulse bandwidthHz20e6
PeakPowerPeak transmit powerW15e6
pulsewidthPulse durations1e-3
prfPulse repetition frequencyHz1000
CarrierWaveInputInput type for carrier waveenum'Frequency' or 'Wavelength'
PowerInputInput type for powerenum'PeakPower' or 'AveragePower'
PulseDurationInputInput type for durationenum'PulseWidth' or 'DutyCycle'
PulseRepetitionInputInput type for PRFenum'PRF' or 'PRI'
Noise
PropertyDescriptionUnitsExample
SystemNoiseInputNoise input typeenum'Temperature' or 'Figure'
NoiseTemperatureSystem noise temperatureK290
referenceNoiseTemperatureReference noise tempK290
QuantizationNoiseEnable quantization noiselogicaltrue/false
QuantizationNumBitsADC bitsinteger12
QuantizationDynamicRangeADC dynamic rangedB60
Antenna
PropertyDescriptionUnitsExample
AntennaHeightAntenna height above groundm75
TiltAngleAntenna tilt angledeg0
PolarizationAntenna polarizationenum'H', 'V', 'Circular'
TxGainTransmit antenna gaindBi40
TxAzBeamwidthTx azimuth beamwidthdeg2
TxElBeamwidthTx elevation beamwidthdeg2
DifferentRxUse different Rx antennalogicalfalse
RxGainReceive antenna gaindBi40
RxAzBeamwidthRx azimuth beamwidthdeg2
RxElBeamwidthRx elevation beamwidthdeg2
TxGainInputTx gain input modeenum'FromAntennaPattern' or 'SincPattern'
RxGainInputRx gain input modeenum'FromAntennaPattern' or 'SincPattern'
TxSincInputTx sinc pattern optionenum'Sinc' or 'Gaussian'
Scanning
PropertyDescriptionUnitsExample
ScanningScan typeenum'None', 'Mechanical', 'Electronic'
AzScanSectorMechMechanical az scan sectordeg360
AzScanSectorElecElectronic az scan sectordeg120
ElScanStartElevation scan startdeg0
ElScanStopElevation scan stopdeg30
Detection
PropertyDescriptionUnitsExample
PfaProbability of false alarmprobability1e-6
NumPulsesNumber of pulses integratedinteger10
PulseIntegrationIntegration typeenum'Coherent', 'Noncoherent'
NumCPIsNumber of CPIsinteger1
BinaryIntegrationEnable binary integrationlogicalfalse
NumBinaryDetectionsBinary detection thresholdintegerdepends
MofNCPIIntegrationEnable M-of-N CPI integrationlogicalfalse
MNumCPIsM threshold for M-of-Nintegerdepends
Track Confirmation
PropertyDescriptionUnitsExample
ConfirmationThreshMM for M/N confirmationinteger3
ConfirmationThreshNN for M/N confirmationinteger5
TrackUpdateInputTrack update input typeenum'TrackUpdateRate' or 'TrackUpdateTime'
TrackUpdateTimeTrack update times1
Signal Processing
PropertyDescriptionUnitsExample
STCEnable STClogicalfalse
STCCutOffRangeSTC cutoff rangem50000
STCExponentSTC exponentscalar4
CFAREnable CFARlogicalfalse
CFARNumCellsCFAR reference cellsinteger20
CFARMethodCFAR methodenum'CA', 'OS', 'GO', 'SO'
MTIEnable MTI filterlogicalfalse
MTICancellerMTI canceller orderinteger2
MTINullVelocityMTI null velocitym/s0
MTIMethodMTI methodenumdepends
EclipsingEnable eclipsing losslogicalfalse
CustomLossAdditional custom lossdB0
Target Properties

Do not use 'Height' as a property name. The property is TargetHeight, not Height. The value 'Height' is an enum value for TargetPositionInputType, not a settable property.

PropertyDescriptionUnitsExample
RCSRadar cross sectionm²1
SwerlingModelSwerling fluctuation modelenum'Swerling0'...'Swerling4'
TargetPositionInputTypeInput typeenum'Height' or 'Elevation'
TargetHeightTarget height/altitudem10000
TargetElevationTarget elevation angledeg5
MaxAccelerationMax target accelerationm/s²50
NameTarget namestring'Target 1'
Environment Properties
PropertyDescriptionUnitsExample
FreeSpaceFree space propagationlogicaltrue
AtmosphericGasLossGas absorption enabledlogicaltrue
LensLossLens effect enabledlogicaltrue
PropagationFactorPropagation factor modellogicaltrue
EarthModelEarth model typeenum'Flat', 'Curved'
SurfaceTypeSurface typeenum'Sea', 'Land', 'Custom'
RainRateRain ratemm/hr4
PrecipitationTypePrecipitation typeenum'Rain', 'Snow', 'Fog', 'Cloud'
SeaStateNumberSea state (0-7)integer3
LandTypeLand typeenumdepends
VegetationTypeVegetation typeenumdepends
EffectiveEarthRadiusEffective earth radiusm8500000
NameEnvironment namestring'Environment 1'
Requirement Specifications
IndexNameDescription
1MaxRangePdMax range at detection probability
2MaxRangeMaximum detection range
3MDSMinimum detectable signal
4MinRangeMinimum range
5UnambiguousRangeUnambiguous range
6RangeResolutionRange resolution
7FirstBlindSpeedFirst blind speed
8RangeRateResolutionRange-rate resolution
9RangeAccuracyRange accuracy
10AzimuthAccuracyAzimuth accuracy
11ElevationAccuracyElevation accuracy
12RangeRateAccuracyRange-rate accuracy
13PtrueTrackTrue track probability
14PfalseTrackFalse track probability
15EIRPEIRP
16PowerAperturePower-aperture product

Each requirement has: Objective, Threshold.


Presenting Results

Always present results to the user in the following structured format:

1. Summary Table

Use Unicode box-drawing characters to render a clean table.

Single radar:

┌───────────────────────┬────────────┬────────┐
│        Metric         │   Value    │ Status │
├───────────────────────┼────────────┼────────┤
│ Max Range             │ 315.1 km   │ PASS   │
├───────────────────────┼────────────┼────────┤
│ Range Resolution      │ 7.5 m      │ PASS   │
├───────────────────────┼────────────┼────────┤
│ First Blind Speed     │ 53.5 m/s   │ WARN   │
└───────────────────────┴────────────┴────────┘

Multi-radar comparison:

┌───────────────────────┬────────────┬────────────┬─────────┐
│        Metric         │  Radar A   │  Radar B   │ Winner  │
├───────────────────────┼────────────┼────────────┼─────────┤
│ Max Range             │ 315.1 km   │ 222.6 km   │ Radar A │
├───────────────────────┼────────────┼────────────┼─────────┤
│ First Blind Speed     │ 53.5 m/s   │ 26.8 m/s   │ Radar A │
└───────────────────────┴────────────┴────────────┴─────────┘

Table rules:

  • Show only metrics that are relevant to the user's question or that differ meaningfully between radars (not all 16 by default)

  • If the user asks for a "full report", show all 16 metrics

  • Include display units in the value cells (km, m/s, dBW, etc.)

  • Use the Status column values directly from the results table (PASS/WARN/FAIL)

2. Key Takeaways

After the table, provide 2-4 bullet points covering:

  • The most significant performance tradeoffs

  • Any surprising results or requirement failures

  • What factor is limiting performance (e.g., rain loss, duty cycle, antenna gain)

  • Impact of the user's parameter change (if they modified something)

3. Verdict

End with a 1-2 sentence summary or recommendation.


Conventions

  1. UI Auto-Updates: All parameter changes fire events that update the web UI automatically — no manual refresh needed.

  2. Handle Persistence: The variable h must persist in the MATLAB base workspace between calls. Each evaluate_matlab_code call shares the same workspace, so h remains available.

  3. Startup Timing: The app takes 5-10 seconds to initialize. radarDesignerSession('launch') handles the wait automatically.

  4. Always Use project_path: When calling mcp__matlab__evaluate_matlab_code, set project_path to the skill's root directory so the wrapper scripts in scripts/ are on the MATLAB path.

  5. Property Names Are Case-Sensitive: Use exact names from the property reference tables above.

  6. Range Auto-Tuning Is Mandatory: When the user specifies a target range, ALWAYS run radarDesignerResults(h, 'autoTune', range_m) BEFORE reading results. Never report a design that overshoots or undershoots the user's requested range by more than 30%.

  7. Always Report Pass/Fail: When presenting results, always include the Status (PASS/WARN/FAIL) for each metric and explicitly call out which requirements are not met.

  8. SI Units: All parameter values must be in SI units — frequency in Hz (not GHz), power in W (not MW), range in m (not km).

  9. Always Consult code-reference.md: Before writing code for multi-radar comparison, session management, export, or before/after analysis, load and follow the patterns in code-reference.md.


Copyright 2026 The MathWorks, Inc.


Files

SKILL.md

Radar Designer MCP Control

Launch and control the MATLAB Radar Designer app programmatically via MCP. Use this skill when a user asks about radar design parameters, wants to configure a radar system, compare radar types, analyze radar performance, or visualize radar metrics interactively in the Radar Designer app.

On Entry

When this skill is first invoked without a specific user request, present the following example prompts to inspire the user:

  1. Design a tracking radar at 5 GHz with 2 MW peak power at 1500 km range for a 1 sq meter target

  2. Compare airport radar performance at 2.8 GHz vs 5.6 GHz — which can achieve 150 km range for a 10 sq meter target?

  3. Set up a weather radar and show how heavy rain (16 mm/hr) degrades detection range

  4. Configure an automotive radar at 77 GHz with electronic scanning for 100 meters range

  5. Add a 200 km max range requirement to my current radar design and check if it meets the objective

Then wait for the user to type their own radar design question.

IMPORTANT

  • Never generate MATLAB scripts for the user that call the wrapper functions directly. These are for the agent's internal use only. When the user asks for a script, use only the built-in export commands via radarDesignerExport.

  • When greeting the user, simply ask about their radar design goals (type, frequency, power, requirements) without referencing the underlying mechanism.

When to Use

  • User asks to design, configure, or analyze a radar system

  • User wants to launch or open the Radar Designer app

  • User asks to change radar parameters (frequency, power, antenna, etc.)

  • User wants to compare different radar types (tracking, airport, airborne, etc.)

  • User asks about radar performance metrics (max range, SNR, detection probability, etc.)

  • User wants to load or save a radar design session (.mat file)

  • User asks about target or environment configuration for radar analysis

  • User wants to set requirements/objectives for a radar design

When NOT to Use

  • User asks about general MATLAB programming unrelated to radar design

  • User wants to use Radar Toolbox functions directly (without the Radar Designer app)

  • User asks about Simulink radar models or Phased Array System Toolbox without the app

  • User wants to create radar waveforms or signals outside the app context

  • User asks about radar theory or equations without wanting to use the app

Prerequisites

  • MATLAB MCP server must be running and connected

  • The mcp__matlab__evaluate_matlab_code tool must be available

  • The Radar Toolbox must be installed in the MATLAB instance

  • The skill's scripts/ directory must be on the MATLAB path (set via project_path)

Code Reference

Consult code-reference.md for detailed code patterns — including multi-radar comparison, session management, export, and range auto-tuning examples. The patterns below are summaries; code-reference.md is authoritative.


Wrapper Scripts

All Radar Designer operations go through 5 p-coded wrapper scripts in scripts/. Always set project_path to the skill's root directory when calling mcp__matlab__evaluate_matlab_code so the scripts are on the MATLAB path.

radarDesignerSession — App lifecycle and sessions
ActionCallReturns
Launch apph = radarDesignerSession('launch')App handle h
Reuse existingh = radarDesignerSession('launch', h)Same h if valid
Start newradarDesignerSession('startNew', h, templateName)—
Save sessionradarDesignerSession('save', h, filePath)—
Load sessionradarDesignerSession('load', h, filePath)—

Templates: 'AirborneRadarSpec', 'AirportRadarSpec', 'AutomotiveRadarSpec', 'TrackingRadarSpec', 'WeatherRadarSpec'

radarDesignerParam — Get/set parameters and requirements
ActionCallReturns
Set parameterradarDesignerParam(h, 'set', specType, propName, value)—
Get parameterval = radarDesignerParam(h, 'get', specType, propName)Property value
Set requirementradarDesignerParam(h, 'setRequirement', reqIndex, propName, value)—

specType: 'Radar', 'Target', 'Environment'

radarDesignerResults — Read results and auto-tune
ActionCallReturns
Read resultsT = radarDesignerResults(h, 'read')Table (16 metrics)
Auto-tune rangeresult = radarDesignerResults(h, 'autoTune', range_m)Struct

Results table columns: Metric, Units, Threshold, Objective, Result_<radarName>, Status_<radarName> (PASS/WARN/FAIL)

Auto-tune result fields: requestedRange_km, achievedRange_km, ratio, converged

radarDesignerMultiRadar — Multiple radar management
ActionCallReturns
Add templateradarDesignerMultiRadar(h, 'add', templateName)—
Clone currentradarDesignerMultiRadar(h, 'clone')—
Select by indexradarDesignerMultiRadar(h, 'select', index)—
Delete currentradarDesignerMultiRadar(h, 'delete')—
List namesnames = radarDesignerMultiRadar(h, 'names')Cell array

Add templates: 'AirborneRadar', 'AirportRadar', 'AutomotiveRadar', 'TrackingRadar', 'WeatherRadar'

radarDesignerExport — Built-in export

The second argument must be an export type string — not a file path. Passing a file path (e.g., fullfile(...)) will error.

App Menu ItemCallDescription
Export Detectability Analysis MATLAB ScriptradarDesignerExport(h, 'detectability')SNR vs Range, Pd vs Range, Environmental Losses, Link Budget
Export Vertical Coverage MATLAB ScriptradarDesignerExport(h, 'coverage')Vertical coverage plot
Generate Metrics ReportradarDesignerExport(h, 'report')Formatted report of numeric metrics
Export Radar Data Generator MATLAB ScriptradarDesignerExport(h, 'rdg')Simulate radar detecting target in dynamic scenario (no refraction)
— Effective Earth Radius ModelradarDesignerExport(h, 'rdg', 'effectiveearth')Requires non-free-space, curved Earth, std/low/mid/high latitude atmosphere
— CRPL Exponential Reference ModelradarDesignerExport(h, 'rdg', 'crpl')Same environment requirements as Effective Earth

Workflow

Step 1: Launch the App
h = radarDesignerSession('launch');

Always check if h already exists:

if ~exist('h','var') || ~isvalid(h)
    h = radarDesignerSession('launch');
end
Step 2: Select a Radar Template
radarDesignerSession('startNew', h, 'TrackingRadarSpec');
Step 3: Set Parameters
radarDesignerParam(h, 'set', 'Radar', 'Frequency', 5e9);     % 5 GHz
radarDesignerParam(h, 'set', 'Radar', 'PeakPower', 2e6);     % 2 MW
radarDesignerParam(h, 'set', 'Target', 'RCS', 1);             % 1 m²
radarDesignerParam(h, 'set', 'Environment', 'RainRate', 4);   % 4 mm/hr

All values in SI units: frequency in Hz, power in W, range in m, etc.

Step 3a: Map User Objectives to Requirements

When the user states a performance goal, set it as the Threshold on the matching requirement.

User saysReq IndexExample call
"150 km range"2 (MaxRange)radarDesignerParam(h, 'setRequirement', 2, 'Threshold', 150e3)
"10 m range resolution"6 (RangeResolution)radarDesignerParam(h, 'setRequirement', 6, 'Threshold', 10)
"0.5° azimuth accuracy"10 (AzimuthAccuracy)radarDesignerParam(h, 'setRequirement', 10, 'Threshold', 0.5)
"100 m/s first blind speed"7 (FirstBlindSpeed)radarDesignerParam(h, 'setRequirement', 7, 'Threshold', 100)
"5 km min range"4 (MinRange)radarDesignerParam(h, 'setRequirement', 4, 'Threshold', 5e3)

Set both Threshold and Objective to the same value unless the user distinguishes a minimum acceptable (Threshold) from a desired goal (Objective).

Step 3b: Range Auto-Tuning (MANDATORY when user specifies a range)

If the user specifies a target range, you MUST run auto-tune BEFORE reading/reporting results:

result = radarDesignerResults(h, 'autoTune', 300e3);  % 300 km target

The auto-tune adjusts peak power (and gain if needed) so the achieved range is within ±15% of the user's request. It also sets the MaxRange requirement threshold to the user's requested range.

Skip this step ONLY if the user did not mention a specific range target.

Step 4: Read Analysis Results
T = radarDesignerResults(h, 'read');

The returned table has 16 rows (one per metric) with columns: Metric, Units, Threshold, Objective, and per-radar Result_<name> and Status_<name> columns.

Status values: PASS (meets objective), WARN (between threshold and objective), FAIL (does not meet threshold).

Step 5: Multi-Radar, Sessions, Export

See code-reference.md for complete patterns.


Complete Property Reference

Radar Properties (Settable)
Waveform
PropertyDescriptionUnitsExample
FrequencyCarrier frequencyHz3e9
PulseBandwidthPulse bandwidthHz20e6
PeakPowerPeak transmit powerW15e6
pulsewidthPulse durations1e-3
prfPulse repetition frequencyHz1000
CarrierWaveInputInput type for carrier waveenum'Frequency' or 'Wavelength'
PowerInputInput type for powerenum'PeakPower' or 'AveragePower'
PulseDurationInputInput type for durationenum'PulseWidth' or 'DutyCycle'
PulseRepetitionInputInput type for PRFenum'PRF' or 'PRI'
Noise
PropertyDescriptionUnitsExample
SystemNoiseInputNoise input typeenum'Temperature' or 'Figure'
NoiseTemperatureSystem noise temperatureK290
referenceNoiseTemperatureReference noise tempK290
QuantizationNoiseEnable quantization noiselogicaltrue/false
QuantizationNumBitsADC bitsinteger12
QuantizationDynamicRangeADC dynamic rangedB60
Antenna
PropertyDescriptionUnitsExample
AntennaHeightAntenna height above groundm75
TiltAngleAntenna tilt angledeg0
PolarizationAntenna polarizationenum'H', 'V', 'Circular'
TxGainTransmit antenna gaindBi40
TxAzBeamwidthTx azimuth beamwidthdeg2
TxElBeamwidthTx elevation beamwidthdeg2
DifferentRxUse different Rx antennalogicalfalse
RxGainReceive antenna gaindBi40
RxAzBeamwidthRx azimuth beamwidthdeg2
RxElBeamwidthRx elevation beamwidthdeg2
TxGainInputTx gain input modeenum'FromAntennaPattern' or 'SincPattern'
RxGainInputRx gain input modeenum'FromAntennaPattern' or 'SincPattern'
TxSincInputTx sinc pattern optionenum'Sinc' or 'Gaussian'
Scanning
PropertyDescriptionUnitsExample
ScanningScan typeenum'None', 'Mechanical', 'Electronic'
AzScanSectorMechMechanical az scan sectordeg360
AzScanSectorElecElectronic az scan sectordeg120
ElScanStartElevation scan startdeg0
ElScanStopElevation scan stopdeg30
Detection
PropertyDescriptionUnitsExample
PfaProbability of false alarmprobability1e-6
NumPulsesNumber of pulses integratedinteger10
PulseIntegrationIntegration typeenum'Coherent', 'Noncoherent'
NumCPIsNumber of CPIsinteger1
BinaryIntegrationEnable binary integrationlogicalfalse
NumBinaryDetectionsBinary detection thresholdintegerdepends
MofNCPIIntegrationEnable M-of-N CPI integrationlogicalfalse
MNumCPIsM threshold for M-of-Nintegerdepends
Track Confirmation
PropertyDescriptionUnitsExample
ConfirmationThreshMM for M/N confirmationinteger3
ConfirmationThreshNN for M/N confirmationinteger5
TrackUpdateInputTrack update input typeenum'TrackUpdateRate' or 'TrackUpdateTime'
TrackUpdateTimeTrack update times1
Signal Processing
PropertyDescriptionUnitsExample
STCEnable STClogicalfalse
STCCutOffRangeSTC cutoff rangem50000
STCExponentSTC exponentscalar4
CFAREnable CFARlogicalfalse
CFARNumCellsCFAR reference cellsinteger20
CFARMethodCFAR methodenum'CA', 'OS', 'GO', 'SO'
MTIEnable MTI filterlogicalfalse
MTICancellerMTI canceller orderinteger2
MTINullVelocityMTI null velocitym/s0
MTIMethodMTI methodenumdepends
EclipsingEnable eclipsing losslogicalfalse
CustomLossAdditional custom lossdB0
Target Properties

Do not use 'Height' as a property name. The property is TargetHeight, not Height. The value 'Height' is an enum value for TargetPositionInputType, not a settable property.

PropertyDescriptionUnitsExample
RCSRadar cross sectionm²1
SwerlingModelSwerling fluctuation modelenum'Swerling0'...'Swerling4'
TargetPositionInputTypeInput typeenum'Height' or 'Elevation'
TargetHeightTarget height/altitudem10000
TargetElevationTarget elevation angledeg5
MaxAccelerationMax target accelerationm/s²50
NameTarget namestring'Target 1'
Environment Properties
PropertyDescriptionUnitsExample
FreeSpaceFree space propagationlogicaltrue
AtmosphericGasLossGas absorption enabledlogicaltrue
LensLossLens effect enabledlogicaltrue
PropagationFactorPropagation factor modellogicaltrue
EarthModelEarth model typeenum'Flat', 'Curved'
SurfaceTypeSurface typeenum'Sea', 'Land', 'Custom'
RainRateRain ratemm/hr4
PrecipitationTypePrecipitation typeenum'Rain', 'Snow', 'Fog', 'Cloud'
SeaStateNumberSea state (0-7)integer3
LandTypeLand typeenumdepends
VegetationTypeVegetation typeenumdepends
EffectiveEarthRadiusEffective earth radiusm8500000
NameEnvironment namestring'Environment 1'
Requirement Specifications
IndexNameDescription
1MaxRangePdMax range at detection probability
2MaxRangeMaximum detection range
3MDSMinimum detectable signal
4MinRangeMinimum range
5UnambiguousRangeUnambiguous range
6RangeResolutionRange resolution
7FirstBlindSpeedFirst blind speed
8RangeRateResolutionRange-rate resolution
9RangeAccuracyRange accuracy
10AzimuthAccuracyAzimuth accuracy
11ElevationAccuracyElevation accuracy
12RangeRateAccuracyRange-rate accuracy
13PtrueTrackTrue track probability
14PfalseTrackFalse track probability
15EIRPEIRP
16PowerAperturePower-aperture product

Each requirement has: Objective, Threshold.


Presenting Results

Always present results to the user in the following structured format:

1. Summary Table

Use Unicode box-drawing characters to render a clean table.

Single radar:

┌───────────────────────┬────────────┬────────┐
│        Metric         │   Value    │ Status │
├───────────────────────┼────────────┼────────┤
│ Max Range             │ 315.1 km   │ PASS   │
├───────────────────────┼────────────┼────────┤
│ Range Resolution      │ 7.5 m      │ PASS   │
├───────────────────────┼────────────┼────────┤
│ First Blind Speed     │ 53.5 m/s   │ WARN   │
└───────────────────────┴────────────┴────────┘

Multi-radar comparison:

┌───────────────────────┬────────────┬────────────┬─────────┐
│        Metric         │  Radar A   │  Radar B   │ Winner  │
├───────────────────────┼────────────┼────────────┼─────────┤
│ Max Range             │ 315.1 km   │ 222.6 km   │ Radar A │
├───────────────────────┼────────────┼────────────┼─────────┤
│ First Blind Speed     │ 53.5 m/s   │ 26.8 m/s   │ Radar A │
└───────────────────────┴────────────┴────────────┴─────────┘

Table rules:

  • Show only metrics that are relevant to the user's question or that differ meaningfully between radars (not all 16 by default)

  • If the user asks for a "full report", show all 16 metrics

  • Include display units in the value cells (km, m/s, dBW, etc.)

  • Use the Status column values directly from the results table (PASS/WARN/FAIL)

2. Key Takeaways

After the table, provide 2-4 bullet points covering:

  • The most significant performance tradeoffs

  • Any surprising results or requirement failures

  • What factor is limiting performance (e.g., rain loss, duty cycle, antenna gain)

  • Impact of the user's parameter change (if they modified something)

3. Verdict

End with a 1-2 sentence summary or recommendation.


Conventions

  1. UI Auto-Updates: All parameter changes fire events that update the web UI automatically — no manual refresh needed.

  2. Handle Persistence: The variable h must persist in the MATLAB base workspace between calls. Each evaluate_matlab_code call shares the same workspace, so h remains available.

  3. Startup Timing: The app takes 5-10 seconds to initialize. radarDesignerSession('launch') handles the wait automatically.

  4. Always Use project_path: When calling mcp__matlab__evaluate_matlab_code, set project_path to the skill's root directory so the wrapper scripts in scripts/ are on the MATLAB path.

  5. Property Names Are Case-Sensitive: Use exact names from the property reference tables above.

  6. Range Auto-Tuning Is Mandatory: When the user specifies a target range, ALWAYS run radarDesignerResults(h, 'autoTune', range_m) BEFORE reading results. Never report a design that overshoots or undershoots the user's requested range by more than 30%.

  7. Always Report Pass/Fail: When presenting results, always include the Status (PASS/WARN/FAIL) for each metric and explicitly call out which requirements are not met.

  8. SI Units: All parameter values must be in SI units — frequency in Hz (not GHz), power in W (not MW), range in m (not km).

  9. Always Consult code-reference.md: Before writing code for multi-radar comparison, session management, export, or before/after analysis, load and follow the patterns in code-reference.md.


Copyright 2026 The MathWorks, Inc.


Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
MathWorks
Publisher
MathWorks (Official)
Source
matlab/matlab-agentic-toolkit · skills-catalog/radar/matlab-design-radar · commit 2a7f215
Licence
BSD 2-Clause License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE.md)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by MathWorks.

Get it from the source

5 of this skill’s files are not mirrored here, so there is no ZIP. Get the complete skill from its source: matlab/matlab-agentic-toolkit