user3406207
user3406207

Reputation: 325

MATLAB: add a line to 3D plot

I would like to add a reference line on a 3d plot which follows the surface built with mesh(). I have 3 points in the x and y axis to build the line and so will need to interpolate to find z axis coordinates. Here is my code (with reproducible data) so far:

acceleration_dB = [0 109.3699 118.0084 133.9584 104.3017 110.5423 120.6332 140.6567 144.4194 129.7292]';
frequency = [1 50 50 50 100 100 100 100 100 500]';
voltage = [ 1.0e-04 * 0.0001 0.0968 0.1645 0.2983 0.0278 0.0368 0.0893 0.2785 0.4928 0.0780 ]';
xlin=linspace(0, max(frequency),33);
ylin=linspace(min(acceleration_dB), max(acceleration_dB),33);
[X, Y] = meshgrid(xlin,ylin);
f = scatteredInterpolant(frequency,acceleration_dB,log(voltage));
Z=f(X,Y);
figure();
mesh(X,Y,Z);
hold on

% Add threshold reference line
threshAccel = [97.0870 104.4212 109.5787]
threshFreq = [50 100 500]
Zthresh=f(threshFreq,threshAccel);
plot3(threshFreq,threshAccel,Zthresh,'Color','black','LineWidth',1)

Which gives:

3dplot

What I would like is the black line following the plane of the surface for the whole length of the x-axis.

Any advice would be greatly appreciated. Thank you!

Upvotes: 0

Views: 1286

Answers (1)

shamalaia
shamalaia

Reputation: 2347

It is just a problem of range I think. This seems to work pretty well:

   threshAccel = [97 97.0870 104.4212 109.5787]
    threshFreq = [0 50 100 500]

but I am not sure about that 97 and 0 are the precise values. You should correct them probably.

Upvotes: 1

Related Questions