Plotting log functions in App designer

Hi there,
I am trying to create a radar app from scratch using functions that are tested okay in Matlab, when i run the codes in appdesigner, the graph does not show. Kindly help. Thanks.
Codes are :
tsc = app.TscansEditField.Value;
Tsc = 10*log10(tsc); % convert Tsc into log equiv
sigma_a = app.AircraftRCSdBsmEditField.Value;
sigma_m = app.MissileRCSdBsmEditField.Value;
% four_pi = 10*log10(4.0 * pi); % (4pi) in dB
k_db = 10*log10(1.38e-23); % Boltzman's constant in dB equiv.
te = app.EffectiveTemperatureKEditField.Value;
Te = 10*log10(te); % noise temp. in dB
% range_a = app.RangeaKmEditField.Value;
% range_adb = 10*log10(range_a* 1000.); % target range^4 in dB
% range_m = app.RangemKmEditField.Value;
% range_mdb = 10*log10(range_m* 1000.); % target range^4 in dB
az_anglea = app.AzimuthangledegEditField.Value;
el_anglea = app.ElevationangledegEditField.Value;
rloss = app.RadarLossdBEditField.Value;
snr = app.SNRdBEditField.Value;
nf = app.NoiseFiguredBEditField.Value;
factor = 10*log10(4*pi);
% Compute Omega in steradians
omega = (az_anglea / 57.296) * (el_anglea /57.296);
omega_db = 10.0*log10(omega); % Convert Omega to dBs
% Plot Power aperture product for missile and aircraft
rangevar = linspace (2,90,1);
rangedb = 10*log10(rangevar);
papm = snr - sigma_m - Tsc + factor + 4.0 .* rangedb + k_db + Te + nf + rloss + omega_db;
papa = snr - sigma_a - Tsc + factor + 4.0 .* rangedb + k_db + Te + nf + rloss + omega_db;
plot(app.UIAxes4,rangevar,papm,"g")
hold (app.UIAxes4, 'on' )
plot(app.UIAxes4,rangevar,papa, "r")
hold (app.UIAxes4, 'off' )

2 commentaires

Walter Roberson
Walter Roberson le 26 Juil 2022
it would help to know values for TscansEditField and the other two
Bumze
Bumze le 26 Juil 2022
Modifié(e) : Bumze le 27 Juil 2022
Thank you for the response.
These codes off the text works perfectly in Matlab.
I have developed the app to compute the power aperture product values but the graph. Thanks

Connectez-vous pour commenter.

 Réponse acceptée

Cris LaPierre
Cris LaPierre le 26 Juil 2022
Modifié(e) : Cris LaPierre le 26 Juil 2022
It looks like you tried to replace the for loop with an elementwise multiplication. However, your syntax for rangevar is only returning a single value. Therefore, the resulting calculation is a single value. Because the plot function does not include a marker style by default, when you plat a single point, it is not visible.
With linspace, you need to specify the number of points you want as the 3rd input. If you instead want to define the increment, stick with the colon operator.
rangevar = 2:90;
% or
rangevar = linspace(2,90,89);

5 commentaires

Bumze
Bumze le 26 Juil 2022
Thanks . I have corrected the linspace error but still have no graph plotted. I also used the for loop , no graph as well.
Cris LaPierre
Cris LaPierre le 26 Juil 2022
Modifié(e) : Cris LaPierre le 26 Juil 2022
I mocked up your app using the info you provided. Works for me. Can you confirm that your axes are, in fact, named UIAxes4?
My app does not use a for loop, but did create rangevar using one of the approaches in my answer (same result using either approach).
Bumze
Bumze le 27 Juil 2022
Modifié(e) : Bumze le 27 Juil 2022
@Cris, your result is what I expected. The axes is indeed UIaxes4, was it only the rangevar that was changed to get your graph or you changed any other line? Thanks so much.
Bumze
Bumze le 27 Juil 2022
Thanks Cris, Mathworks team. I did it all over and got the right results.
Cris LaPierre
Cris LaPierre le 27 Juil 2022
Glad to hear. I did have to build the entire app, but the only thing I changed in the code you shared was rangevar.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Polar Plots dans Centre d'aide et File Exchange

Produits

Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by