2D MIMO virtual antenna array with different tx and rx antennas
Hi All!
I am trying to build up an antenna object, which consists of 3 TX and 4 RX antennas, which would eventually end up as a 2D 12 element virtual antenna array. The TX and RX antennas would have different design, therefore I need to import different characteristics for TX and RX.
My plan is to check and optimize the virtual antenna array pattern, however, I cannot combine the TX and RX array as a virtual array.
I can also combine the TX and RX patterns, but as far as I know, that is just the magnitude, and not the phase. I want to make sure, that the TX and RX phase pattern is properly taken into account.
Here is the code I have so far (the antennas are not real, just a simulated patch and vivaldi antenna data, I won’t even use vivaldi antenna in the future). All the filepath and sensor positions info is deleted.
Many thanks in advance!
clear all;
clc;
%% Parameters
Freq = 62e9;
c = 3e8;
Lambda = c/Freq;
Phi = [0:2:360];
Theta = [0:2:180];
%% Create TX array
% Add Patch element
PatchMagPat = readmatrix(‘VVV.csv’);
PatchPhasePat = readmatrix(‘WWW.csv’);
PatchMag = reshape(PatchMagPat(:, 3), length(Phi), length(Theta))’;
PatchPhase = reshape(PatchPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Patch = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,PatchMag,’PhasePattern’,PatchPhase);
txarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
txradiator = phased.Radiator(‘Sensor’,txarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c);
%% Create RX array
% Add Vivaldi element
VivaldiMagPat = readmatrix(‘XXX.csv’);
VivaldiPhasePat = readmatrix(‘YYY.csv’);
VivaldiMag = reshape(VivaldiMagPat(:, 3), length(Phi), length(Theta))’;
VivaldiPhase = reshape(VivaldiPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Vivaldi = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,VivaldiMag,’PhasePattern’,VivaldiPhase);
rxarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
rxcollector = phased.Collector(‘Sensor’,rxarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c);Hi All!
I am trying to build up an antenna object, which consists of 3 TX and 4 RX antennas, which would eventually end up as a 2D 12 element virtual antenna array. The TX and RX antennas would have different design, therefore I need to import different characteristics for TX and RX.
My plan is to check and optimize the virtual antenna array pattern, however, I cannot combine the TX and RX array as a virtual array.
I can also combine the TX and RX patterns, but as far as I know, that is just the magnitude, and not the phase. I want to make sure, that the TX and RX phase pattern is properly taken into account.
Here is the code I have so far (the antennas are not real, just a simulated patch and vivaldi antenna data, I won’t even use vivaldi antenna in the future). All the filepath and sensor positions info is deleted.
Many thanks in advance!
clear all;
clc;
%% Parameters
Freq = 62e9;
c = 3e8;
Lambda = c/Freq;
Phi = [0:2:360];
Theta = [0:2:180];
%% Create TX array
% Add Patch element
PatchMagPat = readmatrix(‘VVV.csv’);
PatchPhasePat = readmatrix(‘WWW.csv’);
PatchMag = reshape(PatchMagPat(:, 3), length(Phi), length(Theta))’;
PatchPhase = reshape(PatchPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Patch = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,PatchMag,’PhasePattern’,PatchPhase);
txarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
txradiator = phased.Radiator(‘Sensor’,txarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c);
%% Create RX array
% Add Vivaldi element
VivaldiMagPat = readmatrix(‘XXX.csv’);
VivaldiPhasePat = readmatrix(‘YYY.csv’);
VivaldiMag = reshape(VivaldiMagPat(:, 3), length(Phi), length(Theta))’;
VivaldiPhase = reshape(VivaldiPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Vivaldi = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,VivaldiMag,’PhasePattern’,VivaldiPhase);
rxarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
rxcollector = phased.Collector(‘Sensor’,rxarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c); Hi All!
I am trying to build up an antenna object, which consists of 3 TX and 4 RX antennas, which would eventually end up as a 2D 12 element virtual antenna array. The TX and RX antennas would have different design, therefore I need to import different characteristics for TX and RX.
My plan is to check and optimize the virtual antenna array pattern, however, I cannot combine the TX and RX array as a virtual array.
I can also combine the TX and RX patterns, but as far as I know, that is just the magnitude, and not the phase. I want to make sure, that the TX and RX phase pattern is properly taken into account.
Here is the code I have so far (the antennas are not real, just a simulated patch and vivaldi antenna data, I won’t even use vivaldi antenna in the future). All the filepath and sensor positions info is deleted.
Many thanks in advance!
clear all;
clc;
%% Parameters
Freq = 62e9;
c = 3e8;
Lambda = c/Freq;
Phi = [0:2:360];
Theta = [0:2:180];
%% Create TX array
% Add Patch element
PatchMagPat = readmatrix(‘VVV.csv’);
PatchPhasePat = readmatrix(‘WWW.csv’);
PatchMag = reshape(PatchMagPat(:, 3), length(Phi), length(Theta))’;
PatchPhase = reshape(PatchPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Patch = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,PatchMag,’PhasePattern’,PatchPhase);
txarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
txradiator = phased.Radiator(‘Sensor’,txarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c);
%% Create RX array
% Add Vivaldi element
VivaldiMagPat = readmatrix(‘XXX.csv’);
VivaldiPhasePat = readmatrix(‘YYY.csv’);
VivaldiMag = reshape(VivaldiMagPat(:, 3), length(Phi), length(Theta))’;
VivaldiPhase = reshape(VivaldiPhasePat(:, 3), length(Phi), length(Theta))’;
AntElem_Vivaldi = phased.CustomAntennaElement(‘PatternCoordinateSystem’,’phi-theta’,’PhiAngles’,Phi,’ThetaAngles’,Theta, …
‘MagnitudePattern’,VivaldiMag,’PhasePattern’,VivaldiPhase);
rxarray = phased.ConformalArray(‘Element’,AntElem_Patch,…
‘ElementPosition’,’???’);
rxcollector = phased.Collector(‘Sensor’,rxarray,’OperatingFrequency’,Freq,…
‘PropagationSpeed’,c); radar, phased array MATLAB Answers — New Questions