How to find input from output?

8 vues (au cours des 30 derniers jours)
Elouise Matthews
Elouise Matthews le 4 Mar 2020
Commenté : Star Strider le 27 Sep 2021
A function finds a value x from values (a, b, c).
How can I find the input c, given that I know the inputs a, b and the output x?
  1 commentaire
abdulaziz allohani
abdulaziz allohani le 25 Fév 2021
x=[2 3 43 3]

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 4 Mar 2020
One approach:
fabc = f(a,b,c); % Value Of Function Evaluated With All Arguments
find_c = fsolve(@(c)norm(fabc - f(a,b,c)), rand); % Find Unknown Argument
However it depends on what ‘A function’ is, since if it has several roots, the unknown parameter may not be uniquely identifiable.
  4 commentaires
Ravikiran Nataraj
Ravikiran Nataraj le 27 Sep 2021
Hey guys,
I'm having trouble understanding this solution and why it works. I understand why fabc = f(a, b, c); is needed to create a value for an output based on given inputs. However, why is fabc - f(a,b,c) in the 2nd line. Isn't that value 0? What is purpose of using norm & rand?
I'm facing a similar problem but 'fsolve' returns the initial guess (you used rand) because it says the difference in arguments is 0. Here's my code.
diff = find_Z(dataT(1), dataT(2), dataP(1), dataP(2), w);
fopt = find_Z(dataT(1), dataT(2), dataP(1), dataP(2), w) - diff;
T_vle = fsolve(@(T) fopt, 270)
I have a function 'find_Z' w/ 5 inputs and 5 outputs (I've chosen to store ONLY the first output). I'm trying to optimize output arg 1 'diff' to 0 by changing input arg 1 (T). But when I solve it, fopt is equal to 0 and fsolve returns 270, my initial guess.
How can I fix this & better understand how 'fsolve' works?
Star Strider
Star Strider le 27 Sep 2021
@Ravikiran Nataraj — This is an abstract solution to an abstract problem, and it may not apply to the situation you pose. If you have a specific problem, post it as a new Question.

Connectez-vous pour commenter.

Plus de réponses (1)

abdulaziz allohani
abdulaziz allohani le 25 Fév 2021
>>x=[2 5 6 8 9 6]

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by