【问题标题】:MATLAB: add a line to 3D plotMATLAB:在 3D 图中添加一条线
【发布时间】:2016-06-06 04:47:29
【问题描述】:

我想在 3d 绘图上添加一条参考线,该参考线遵循使用 mesh() 构建的曲面。我在 x 和 y 轴上有 3 个点来构建线,因此需要插值以找到 z 轴坐标。到目前为止,这是我的代码(带有可重现的数据):

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)

这给出了:

我想要的是在整个 x 轴长度上沿着表面平面的黑线。

任何建议将不胜感激。谢谢!

【问题讨论】:

  • 我必须构建这条线的坐标是 x 和 y 轴上的 [10,97.0870] [100, 104.4212] [500, 109.5787]。我想将这条线延伸到频率轴的最小限制(0 - 500),但也要遵循 3d 表面的浮雕。
  • 您是否尝试为threshAccelthreshFreq添加更多积分?
  • 是的,这似乎是我需要做的,即向threshAccelthreshFreq添加更多点,并在z平面上得到它们对应的坐标(这样线实际上不是在网格上方“浮动”。但我不知道该怎么做。某种 3d 插值?
  • 你是如何获得threshAccelthreshFreq的?如果您没有解析表达式,您可以对这三个点进行插值,然后使用拟合参数计算新的 threshAccelthreshFreq

标签: matlab plot 3d line


【解决方案1】:

我认为这只是范围的问题。这似乎工作得很好:

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

但我不确定970 是否是精确值。您可能应该更正它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多