Using Solve with 'albersheim'

9 visualizzazioni (ultimi 30 giorni)
Vijay Bambal
Vijay Bambal il 7 Gen 2019
Commentato: Vijay Bambal il 7 Gen 2019
I am trying to find Probability of detection (Pd) given SNR and Pfa with function 'albershiem; given values of SNR and Pfa. The code goes as under :-
syms Pd;
Pfa = 7e-10;
SNR = 14;
eqn = SNR == albersheim(Pd, Pfa);
At this stage error 'Pd expected to be numeric. Instead its type was sym' is indicated.
So the next statement soln = solve(eqn, Pd) cannot even be executed.
Request assistance.
  1 Commento
Walter Roberson
Walter Roberson il 7 Gen 2019
Not all functions are written with symbolic values in mind. Looking at the code it appears to me that the way the code was written to permit efficient code generation is inconsistent with the possibility of symbolic input. That is it appears to me that if you were to copy the routine and strip out the error checking that you could arrive at something that could take symbolic inputs, that the problem is not the algorithm but rather the hooks and checking for code generation .
Looking at the calculation I would suspect there will not be a closed form solution for solve to find. solve would probably return a numeric solution .

Accedi per commentare.

Risposta accettata

Torsten
Torsten il 7 Gen 2019
Pfa = 7e-10;
SNR = 14;
Pd0 = 1.0;
Pd = fzero(@(x)albersheim(x,Pfa)-SNR,Pd0);
  1 Commento
Vijay Bambal
Vijay Bambal il 7 Gen 2019
Thanks. It works.
Small change. Pd is expected to be between 0 and 1. So Pd0 should be set to some intermediate value such as 0.2 instead of 1. Setting Pd0 to 1 gives error 'Expected PD to be a scalar with value < 1'.
Thanks again.

Accedi per commentare.

Più risposte (0)

Tag

Prodotti


Release

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by