How can I show (x,y) of a point in fsurf function?

3 views (last 30 days)
I have the following script:
Rx = eye(2);
Rdx = [2; 4.5];
wo = inv(Rx)*Rdx;
var_d = 24.4;
syms w1 w2
vec_w = [w1 ; w2];
J(w1,w2) = var_d - 2*vec_w'*Rdx + vec_w'*Rx*vec_w
fsurf(J)
hold on
fsurf(wo(1),wo(2),J(wo(1),wo(2)),'Marker','diamond','MarkerFaceColor','r', 'MarkerSize',16)
xlim([-4.25 5.75])
ylim([-1.61 8.39])
zlim([-36 104])
view([99 20])
I get this Figure:
It's pretty good, actually. But I would like to show the (x, y) coordinates of my red point. In my mind, I imagine achieve something like that (I do that in a imagem editor):
How can I do that in Matlab? Thanks :)

Accepted Answer

Star Strider
Star Strider on 2 Dec 2019
Try this:
Rx = eye(2);
Rdx = [2; 4.5];
wo = Rx\Rdx;
var_d = 24.4;
syms w1 w2
vec_w = [w1 ; w2];
J(w1,w2) = var_d - 2*vec_w'*Rdx + vec_w'*Rx*vec_w;
Jfcn = matlabFunction(J);
xv = linspace(-4.25, 5.75, 25);
yv = linspace(-1.61, 8.39, 25);
[X,Y] = ndgrid(xv,yv);
Z = Jfcn(X,Y);
figure
surf(X, Y, Z)
xlim([-4.25 5.75])
ylim([-1.61 8.39])
zlim([-36 104])
hold on
plot3(2, 4.3, Jfcn(2,4.3),'Marker','diamond','MarkerFaceColor','r', 'MarkerSize',16);
plot3([min(xlim) 2], [0 0]+4.3, [0 0]+min(zlim), '--k')
plot3([0 0]+2, [min(ylim) 4.3], [0 0]+min(zlim), '--k')
plot3([0 0]+2, [0 0]+4.3, [min(zlim) Jfcn(2,4.3)], '--k')
hold off
view([99 20])
I got tired of waiting fot the fsurf plots to calculate and plot (even on my Ryzen 7 1800X it takes forever), so I did a numieric shortcut. This gives the basic idea for you to experiment with, produicng:
1How can I show (x,y) of a point in fsurf function - 2019 12 01.png

More Answers (0)

Categories

Find more on Animation in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!