3D pattern plotting function seems to be wrong !

I wrote the following function for plotting 3D pattern of an array with position vectors in a matrix named ``RIS'' and the beamforming weights in W, there seems to be an error which I am unable to locate, any comments ?
function [G] = Full_3D_Pattern (W, RIS)
theta = -pi/2 : pi/2e2 : pi/2; phi = theta; %angle steps of 1 degree for plotting
G = zeros ( length(theta), length(phi) );
A = zeros ( length(W), length(theta), length(phi) );
for k = 1:length(phi)
for tta = 1:length(theta)
ux = cos(phi(k))*sin(theta(tta));
uy = cos(phi(k))*cos(theta(tta));
uz = sin (phi(k));
u = [ux; uy; uz];
A (:,tta,k) = exp (-1i*pi*u'*RIS); % RIS steering vector for tta, k
G (tta,k) = abs(W' * A (:,tta,k)) * cos(theta(tta))*cos(phi(k)) * 2;
end
end
figure('Name','3D Pattern')
set(0,'DefaultAxesFontSize',20,'DefaultTextFontSize',20);
mesh(theta,phi,abs(G).^2);xlim([-pi/2 pi/2]);ylim([-pi/2 pi/2]); %%%% radian space
xlabel('Phi','FontSize',22); ylabel('Theta','FontSize',22); colorbar
end

6 件のコメント

Adam Drake
Adam Drake 2023 年 10 月 22 日
Can you provide RIS and W in a mat file?
Krishan Kumar Tiwari
Krishan Kumar Tiwari 2023 年 10 月 22 日
編集済み: Krishan Kumar Tiwari 2023 年 10 月 22 日
RIS_Full.mat and W.mat are attached.
W.mat I get from the following function for steering at el = -45*pi/180; and az = -pi/3
function [WS] = Steering (RIS, el, az)
Sx = cos(el) * sin(az); Sy = cos(el)*cos(az); Sz = sin(el); %Steering direction co-ordinates
% St = [Sx,Sy,Sz].'; %Steering direction unit vector
St = [Sx; Sy; Sz];
J = sqrt(-1); WS = exp ( -J*pi*(St'*RIS) ); % RIS steering vector for the steering direction S
% A = exp(-J*pi*(r'*P));
end
Krishan Kumar Tiwari
Krishan Kumar Tiwari 2023 年 10 月 22 日
編集済み: Krishan Kumar Tiwari 2023 年 11 月 25 日
Or for simplicity, RIS and W are as in
clear; clc; close all;
NpH = 64; % # of RIS elements per sub-array
NpV = 5;
RIS_X = ( 0 : (NpH-1) ); % X range of RIS co-ordinates
RIS_X = kron ( ones(1,NpV) , RIS_X );
RIS_Z = ( 0 : (NpV-1) );
RIS_Z = kron ( RIS_Z, ones(1,NpH) );
RIS = [ RIS_X ; zeros(1,NpH*NpV) ; RIS_Z ];
% figure()
% plot3 ( RIS(1,:), RIS(2,:), RIS(3,:), '*'); hold on;
el = -45*pi/180;
az = -pi/3;
Sx = cos(el) * sin(az); Sy = cos(el)*cos(az); Sz = sin(el); %Steering direction co-ordinates
St = [Sx; Sy; Sz];
W = exp ( -1i*pi*(St'*RIS) );
Full_3D_Pattern ( ones(320,1).*W.', RIS );
Star Strider
Star Strider 2023 年 10 月 22 日
The code runs without error. Is there a problem with the result?
LD1 = load('RIS_Full.mat');
RIS = LD1.RIS_Full;
LD2 = load('W.mat');
W = LD2.W;
G = Full_3D_Pattern (W, RIS);
function [G] = Full_3D_Pattern (W, RIS)
theta = -pi/2 : pi/2e2 : pi/2; phi = theta; %angle steps of 1 degree for plotting
G = zeros ( length(theta), length(phi) );
A = zeros ( length(W), length(theta), length(phi) );
for k = 1:length(phi)
for tta = 1:length(theta)
ux = cos(phi(k))*sin(theta(tta));
uy = cos(phi(k))*cos(theta(tta));
uz = sin (phi(k));
u = [ux; uy; uz];
A (:,tta,k) = exp (-1i*pi*u'*RIS); % RIS steering vector for tta, k
G (tta,k) = abs(W' * A (:,tta,k)) * cos(theta(tta))*cos(phi(k)) * 2;
end
end
figure('Name','3D Pattern')
set(0,'DefaultAxesFontSize',20,'DefaultTextFontSize',20);
mesh(theta,phi,abs(G).^2);xlim([-pi/2 pi/2]);ylim([-pi/2 pi/2]); %%%% radian space
xlabel('Phi','FontSize',22); ylabel('Theta','FontSize',22); colorbar
end
.
Krishan Kumar Tiwari
Krishan Kumar Tiwari 2023 年 10 月 22 日
編集済み: Krishan Kumar Tiwari 2023 年 10 月 22 日
Yes, there is a problem, if you give el = az = 0, then you get a fan / blade beam, when you steer it, it gets curved -- just steering causes the curvature -- it should not !!
Krishan Kumar Tiwari
Krishan Kumar Tiwari 2023 年 10 月 22 日
For el = az = 0, use W = ones (320,1), sorry i should have written it earlier .

サインインしてコメントする。

回答 (0 件)

カテゴリ

製品

リリース

R2019b

質問済み:

2023 年 10 月 21 日

編集済み:

2023 年 11 月 25 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by