# perturbedPattern

Display pattern of perturbed array

## Description

pmc = perturbedPattern(array,freq) returns a set of perturbed azimuth array patterns pmc for an array generated from 100 Monte-Carlo runs. freq specifies the operating frequency at which the pattern is computed.

example

pmc = perturbedPattern(array,freq,az) also specifies the azimuth angles az used for computing the perturbed patterns.

pmc = perturbedPattern(array,freq,az,el) also specifies the elevation angles el used for computing the perturbed patterns.

example

pmc = perturbedPattern(___,Name=Value) also sets the specified parameter Name to the specified Value. You can specify additional name-value pair arguments in any order as (Name1=Value1,...,NameN=ValueN). For example, NumTrials = 10000.

[pmc,pnm,mpmc,varpmc] = perturbedPattern(array,___) also returns the nominal array response pattern pnm, the mean array response pattern mpmc, and the variance of the array response pattern varpmc.

perturbedPattern(array,___) plots all perturbed patterns for all Monte-Carlo runs and overlays them with both the nominal array response pattern and the mean perturbed array response pattern.

## Examples

collapse all

Create an 11-element Uniform Linear Array. The array operates at 300 MHz and its elements are spaced one-half wavelength apart. Perturb the element positions by 1/20th of a wavelength. Use the default value of 100 Monte Carlo runs. Compute the pattern for the first simulation at all azimuth angles. Set the random number generator seed for reproducibility.

freq = 300.0e6;
lambda = physconst('LightSpeed')/freq;
d = lambda/2;
array = phased.ULA(11,ElementSpacing=d/2);
rng(10007)
perturbations(array,'ElementPosition','Normal',0,lambda/20);
perturbations(array,'TaperMagnitude','Normal',0,0.1);
pmc = perturbedPattern(array,freq);

Plot the array pattern vs azimuth angle.

plot(mag2db(abs(pmc(:,1))))
ylabel('Array Response (dB)')
xlabel('Azimith Angle (deg)')
title('Array Response')
grid on
xticks([0:30:180])

Create an 11-element uniform linear array (ULA). The array operates at 300 MHz and its elements are spaced one-half wavelength apart. Perturb the element positions by 1/20th of a wavelength. Use the default value of 100 Monte Carlo runs. Compute the pattern for the first simulation at azimuth angles from $-45$ to $+45$ degrees. Set the seed of the random number generator for reproducibilty.

freq = 300.0e6;
lambda = physconst('LightSpeed')/freq;
d = lambda/2;
array = phased.ULA(11,ElementSpacing = d/2);
rng(230081)
perturbations(array,'ElementPosition','Normal',0,lambda/20);
perturbations(array,'TaperMagnitude','Normal',0,0.1);

Display the array response pattern for the first Monte Carlo run.

azang = -45:45;
pmc = perturbedPattern(array,freq,azang);
plot(azang,mag2db(abs(pmc(:,1))))
title('Response Pattern')
xlabel('Azimuth Angle (deg)')
ylabel('Array Response (dB)')
xticks([-45:15:45])
grid on

Create an 11-element Uniform Linear Array. The array operates at 300 MHz and its elements are spaced one-half wavelength apart. Perturb the element positions by 1/20th of a wavelength. Run 200 Monte Carlo simulations and steer the array 30 degrees in azimuth.

freq = 300e6;
lambda = physconst('Lightspeed')/freq;
d = lambda/2;
array = phased.ULA(11,ElementSpacing=d/2);
pos = getElementPosition(array);
sv = steervec(pos,30);
perturbations(array,'ElementPosition','Normal',0,lambda/20);
perturbations(array,'TaperMagnitude','Normal',0,0.1);
azang = -90:90;
elang = 0;
perturbedPattern(array,freq,azang,elang,Weights=sv,NumTrials=200);

## Input Arguments

collapse all

Phased array, specified as a Phased Array System Toolbox System object.

Frequency used to compute array patterns, specified as a positive scalar. Units are in Hz.

Data Types: double

Azimuth angles for computing power pattern, specified as a scalar or length-M real-valued vector. Either az or el, must be a scalar. Units are in degrees.

Data Types: double

Elevation angles for computing power pattern, specified as a scalar or length-N real-valued vector. Either az or el must be a scalar. Units are in degrees.

Data Types: double

### Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: pmc = perturbedPatter(array,NumTrials = 1000)

Number of Monte-Carlo trials, specified as a positive integer.

Data Types: double

Axes on which the pattern is displayed, specified as an axis handle..

Data Types: double

Signal propagation speed, specified as a positive scalar. The default value is physconst('lightSpeed'). Units are in m/s.

Example: 300e6

Data Types: double

Element weights, specified as a length-P complex-valued vector. P is the number of elements belonging to the array specified in the array argument.

Example: ones(11,1)

Data Types: double
Complex Number Support: Yes

## Output Arguments

collapse all

Perturbed array pattern, returned as an M-by-Q or N-by-Q complex-valued matrix. M is the number of angles in the az argument. N is the number of angles in the el argument. Either az or el must be a scalar.Q is the number of Monte-Carlo trials. Each trial generates a different pattern. Units are in degrees.

Data Types: double
Complex Number Support: Yes

Nominal array pattern, returned as an M complex-valued vector or as an N-by-Q complex-valued vector. M is the number of angles in the az argument. N is the number of angles in the al argument. Either az or el must be a scalar. Units are in degrees.

Data Types: double

Mean of array response pattern, returned as a length-M real-valued vector or as an length-N real-valued vector. M is the number of angles in the az argument. N is the number of angles in the al argument. Units are in degrees.

Data Types: double

Variance of array response pattern, returned as a length-M real-valued vector or as an length-N real-valued vector. M is the number of angles in the az argument. N is the number of angles in the al argument. Units are in degrees.

Data Types: double

## Version History

Introduced in R2022a