- When you define the array normal as the 'z' axis, you're effectively orienting the broadside of the array along the z-axis. This means that the main lobe of the radiation pattern will be directed along the z-axis, and not in the x-y plane.
- The directivity function calculates the directivity of the array at a given frequency and direction. The direction is specified in azimuth and elevation angles (in degrees), where the default direction is broadside (azimuth = 0°, elevation = 0°).
- Similarly, you would need to calculate gain too.
phased.URA objects with 'ArrayNormal' set to other than default cause directivity and gain calculations to be inaccurate.
3 ビュー (過去 30 日間)
古いコメントを表示
Create an array using the option to specify a different array normal than the default, which is the x-axis.
fc = 2.95e9;
c = physconst('LightSpeed');
M = 8; % Number of elements on each row
N = 8; % Number of elements on each column
dx = c/fc/2;
dy = dx;
array = phased.URA([N M],[dx dy],'ArrayNormal','z');
Calculate the directivity and gain and the answers will be large negative numbers.
D = directivity(array,fc,0);
gain = phased.ArrayGain("SensorArray",array);
g = gain(fc,[0;0]);
Seems like a flaw in the toolbox?
0 件のコメント
回答 (1 件)
Gyan Vaibhav
2024 年 2 月 28 日
編集済み: Gyan Vaibhav
2024 年 2 月 28 日
Hi Jonathan,
It seems like you're working with MATLAB's Phased Array System Toolbox to create a uniform rectangular array (URA) and calculate its directivity and gain. The code you've provided is mostly correct for setting up the array and the calculations, but there are a few considerations to keep in mind:
I tried and saw that, when you remove the array normal property, you get the same values as when you pass the angles to the directivity and gain functions, which should be the expected output.
Here is the modified code.
fc = 2.95e9;
c = physconst('LightSpeed');
M = 8; % Number of elements on each row
N = 8; % Number of elements on each column
dx = c/fc/2;
dy = dx;
array = phased.URA([N M],[dx dy],'ArrayNormal','z');
% Calculate directivity at broadside (azimuth = 0, elevation = 90)
D = directivity(array,fc,[0;90]);
% Create an ArrayGain object
gain = phased.ArrayGain('SensorArray',array);
% Calculate gain at broadside (azimuth = 0, elevation = 90)
g = gain(fc,[0;90]);
Go through the following documentations to know more about these functions:
Hope this helps.
Thanks
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Array Geometries and Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!