Inverse of log formula
Mostra commenti meno recenti
Hi, I have the following formula:
y = -log(x / mean(x))
y and x are vector’s.
However, in my case I only know y, but not x. Therefore, I would like to solve the inverse of the formula for x. I am aware of that exp is the inverse of log:
x=-exp(y)
but I am not sure how to consider the term mean(x)?
Thank you in advance.
Lisa
Risposta accettata
Più risposte (2)
Image Analyst
il 1 Mag 2017
0 voti
Try fzero().
1 Commento
John D'Errico
il 1 Mag 2017
Nope. Not possible to use fzero here.
Image Analyst
il 1 Mag 2017
Lisa, is this what you are after - to find the x for a y that is a specified value? You can do it numerically like this, where I find the x where y = 1:
% Define a range of x values.
x = sort(rand(1, 500), 'ascend');
% Compute the y values over that range.
fprintf('mean(x) = %f\n', mean(x));
y = -log(x / mean(x));
% Plot curve.
plot(x, y, 'b-', 'LineWidth', 2);
grid on;
xlabel('x', 'FontSize', 20);
ylabel('y', 'FontSize', 20);
% Find the x closest to y = 1 (for example).
[minValue, index] = min(abs(y-1))
% Get x and y values
x1 = x(index);
y1 = y(index);
fprintf('Closest point: y = %f at x = %f\n', y1, x1);
% Draw lines
hold on;
line([0, x1], [y1, y1], 'Color', 'r', 'LineWidth', 2);
line([x1, x1], [0, y1], 'Color', 'r', 'LineWidth', 2);
ax = gca;
ax.XAxisLocation = 'origin';
In the command window:
mean(x) = 0.514679
minValue =
0.0017406261319084
index =
93
Closest point: y = 1.001741 at x = 0.189011
And the plot of the results:

Categorie
Scopri di più su Entering Commands in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!