i have a question that works backwards
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
I have a set of values for F and a set of values for D.
When F and D are divided together they give a ratio that I have the answers to in variable X
so
X=F./(D.^5)
ex.
F =[
0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0028 0.0028 0.0028]
D =[
0.9652 1.0160 1.0668 1.1176 1.1684 1.2192 1.3208 1.4224 1.5240 1.6256]
X=[0.0024 0.0019 0.0015 0.0012 0.0010 0.0007 0.0005 0.0003 0.0002]
I want code that tells me for which F and which D give me the known answer of X
5 commentaires
dpb
le 28 Avr 2019
What if there isn't an exact match (with floating point even if is theoretically, may not be numerically but that's a different issue)?
So, what is the desired answer for the above example data set?
Image Analyst
le 28 Avr 2019
It's possible there is no (F, D) pair that gives the desired X value. Look:
F = [0.0026 0.0026 0.0026 0.0026 0.0027 0.0027 0.0027 0.0028 0.0028 0.0028]
D = [0.9652 1.0160 1.0668 1.1176 1.1684 1.2192 1.3208 1.4224 1.5240 1.6256]
X = [0.0024 0.0019 0.0015 0.0012 0.0010 0.0007 0.0005 0.0003 0.0002]
X=F./(D.^5)
plot3(F, D, X, 'b*-', 'LineWidth', 2);
grid on;
xlabel('F', 'FontSize', 20);
ylabel('D', 'FontSize', 20);
zlabel('X', 'FontSize', 20);

Well, individually, however, the variables are monotonic so one could in theory interpolate which is what the crystal ball is saying the OP would want to do...but would be good to know just what is the desired result for sure...
yyaxis left
hLL=plot([F;X].');
ylabel('F, X')
yyaxis right
hLR=plot(D);
ylabel('D')
xlabel('Ordinal number');
legend([hLL;hLR],'F','X','D')

The attached data are lacking in significant digits for both D and F but even so, X is relatively smooth.
Omar Almahallawy
le 29 Avr 2019
Modifié(e) : dpb
le 29 Avr 2019
dpb
le 29 Avr 2019
That's a trivial Q? as posed; you calculated X_i from F,D_i so the answer is simply "i" for the set of calculated values.
IF you somehow generate the identically-computed X from some other location, then that Xprime value would match one of the originals; to find which one would be simply
indx=find(X==Xprime);
BUT as was noted in the previous comment, that exact lookup will fail almost certainly owing to floating point rounding and precision issues; perhaps ismember could help resolve that particular problem but somehow I don't think you've yet described what you're after sufficiently for us to understand what the objective is here.
Réponses (1)
Jos (10584)
le 29 Avr 2019
What about
% X is known
F = X
D = ones(size(F))
% F ./ (D.^5) equals X
or is this to simply thought by me ;-)
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!