Sum two different coverage models
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Barney
el 8 de En. de 2025
Comentada: Walter Roberson
el 9 de En. de 2025
Is there a way to sum two different coverage outputs? I have two different transmitters and have plotted the output of each on the same coverage map. I notice that it appears to do the equivalent of a 'max hold' where the field patterns from the separate transmitters overlap. Is there a way to sum the field patterns from the separate transmitters? I realise that this would effectively assume zero phase diference at all points of interaction, but that suits what I am aiming to do.
So far I have tried converting the output of the coverage .Data to an array. This provides the lat, long, and dB output for each transmitter. What I can't work out is how to sum these arrays when the lat and long values are different (as the transmitters are in different locations). In an ideal world, I would then convert the summed arrays back into a coverage map of the result.
Any help much appreciated.
% horn antenna setup
tx_horn = horn("Height", 0.06, "Width", 0.16, "Length", 0.10, "FeedHeight", ...
0.04, "FeedWidth", 0.002, "FlareHeight", 0.216, "FlareLength", 0.15, ...
"FlareWidth", 0.266);
% transmitter array setup
f = 1.3e9; % Frequency
c = 299792458; % Speed of light
wl = c / f; % Wavelength
M = 2; % Number of elements on each row
N = 2; % Number of elements on each column
dy = 0.5 * wl; % Spacing between row elements (m)
dz = 0.5 * wl; % Spacing between column elements (m)
ura = phased.URA([N M], [dz dy], 'Element', tx_horn);
% transmitter setup
tx1 = txsite('Latitude', 52.36364, ...
'Longitude', -3.77767, ...
'TransmitterFrequency', f, ...
'Antenna', ura, ...
'AntennaHeight', 5, ...
'TransmitterPower', 50, ...
'AntennaAngle', 90);
tx2 = txsite('Latitude', 52.36369, ...
'Longitude', -3.78150, ...
'TransmitterFrequency', f, ...
'Antenna', ura, ...
'AntennaHeight', 5, ...
'TransmitterPower', 50, ...
'AntennaAngle', 90);
% coverage output
e_max = -20;
e_min = -60;
e_step = 1;
cov1 = coverage(tx1, 'close-in', 'SignalStrengths', e_min:e_step:e_max, 'ColorLimits', [e_min e_max]);
cov2 = coverage(tx2, 'close-in', 'SignalStrengths', e_min:e_step:e_max, 'ColorLimits', [e_min e_max]);
% convert to arrays for summing?
tx_array1 = table2array(cov1.Data);
tx_array2 = table2array(cov2.Data);
% What next?
0 comentarios
Respuesta aceptada
Walter Roberson
el 8 de En. de 2025
Movida: Walter Roberson
el 8 de En. de 2025
You could probably extract the lat and long vectors from tx_array1 and tx_array2 and do scatteredInterpolant() to construct interpolating objects with interpolation method set to 'none'. After that would be a matter of inventing common query points. Then query each of the scattered interpolant objects at the common query points.
Now,
result = zeros(size(QUERY_RESULT1));
mask1 = isnan(QUERY_RESULT1);
mask2 = isnan(QUERY_RESULT2);
tmask = ~mask1 & ~mask2;
result(tmask) = QUERY_RESULT1(tmask) + QUERY_RESULT2(tmask);
tmask = ~mask1 & mask2;
result(tmask) = QUERY_RESULT1(tmask);
tmask = mask1 & ~mask2;
result(tmask) = QUERY_RESULT2(tmask);
%mask1 & mask2 is nan in both places. The output result for there should be
%0, which we already got by initializing the result array to 0.
4 comentarios
Walter Roberson
el 9 de En. de 2025
I don't know what I was thinking, putting the result before the other information !
Más respuestas (0)
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!