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 Comments

it would help to know values for TscansEditField and the other two
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

Sign in to comment.

 Accepted Answer

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 Comments

Thanks . I have corrected the linspace error but still have no graph plotted. I also used the for loop , no graph as well.
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 on 27 Jul 2022
Edited: Bumze on 27 Jul 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.
Thanks Cris, Mathworks team. I did it all over and got the right results.
Glad to hear. I did have to build the entire app, but the only thing I changed in the code you shared was rangevar.

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022a

Community Treasure Hunt

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

Start Hunting!