Using Solve with 'albersheim'

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 Comment

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 .

Sign in to comment.

 Accepted Answer

Torsten
Torsten on 7 Jan 2019
Pfa = 7e-10;
SNR = 14;
Pd0 = 1.0;
Pd = fzero(@(x)albersheim(x,Pfa)-SNR,Pd0);

1 Comment

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.

Sign in to comment.

More Answers (0)

Products

Release

R2018a

Tags

Community Treasure Hunt

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

Start Hunting!