【问题标题】:Can anyone recognize what kind of 3D plotting function does this? (MATLAB)谁能认出这是什么类型的 3D 绘图功能? (MATLAB)
【发布时间】:2014-06-19 19:47:20
【问题描述】:

我为 SAFT(合成孔径聚焦技术)编写了代码并成功绘制了 2D 图像。现在,我在用 3D 绘制它时遇到了问题,因为我不知道应该使用哪种函数。我想创建 3D 图像,如下面的图像链接所示(右侧是实心体积),但我不知道他们使用的功能。我只知道左图是拼接的。

如果有人能帮助我解决这个问题,我将不胜感激。提前谢谢!

这是我一直用于 3D 数组的示例代码。请注意,我只是使用随机值作为强度,这里是 V,因为实际值存储在 excel 文件中。使用等值面时出现错误,因为我的数组不是使用网格网格创建的。

r=linspace(50,500,101)';
o=zeros(101,1);
X=zeros(51,101,13);
Y=zeros(51,101,13);
Z=zeros(51,101,13);
V=rand(size(X));

slice=1;
for angle=0:15:180
    for elev=1:1:51
    %Setup X,Y,Z Coordinates
        X(elev,:,slice)=(r*cos(angle*3.141593/180))';
        Y(elev,:,slice)=(r*sin(angle*3.141593/180))';
        Z(elev,:,slice)=(o+((elev-1)*0.01))';
    end 
if slice < 13
    slice=slice+1;
else
end
end

【问题讨论】:

  • 你试过'isosurf'吗?
  • 谢谢,我会尝试研究它是如何工作的
  • 它将一个 3d 数组 f 和一个值 v 作为输入并显示 f=v 的表面
  • 如果坐标数组不是用meshgrid形成的,它还能工作吗?我的坐标是圆柱形的,所以我不能使用 meshgrid 命令。
  • 如果您发布指向您的数据的链接,我可以为您尝试。

标签: image matlab 3d plot


【解决方案1】:

您尝试过“冲浪”还是“网状”?不知道它是否适用于您的情况,但请尝试一下。

【讨论】:

  • 好的,我尝试使用“isosurf”,但出现错误,提示我的矩阵应该由“meshgrid”生成。所以我认为使用“网格”也行不通。我的矩阵大小是 73x101x11。
【解决方案2】:

您的解决方案是使用 matlab 函数isosurface。唯一的问题是您的网格不是笛卡尔坐标系。 您应该使用meshgrid 创建一个笛卡尔网格,并在使用isosurface 显示结果之前将您的V 值重新采样到该网格。

【讨论】:

  • 哦 :( 我无法将我的“V”值重新采样到笛卡尔网格,因为它被锁定到圆柱坐标。即使我创建了一个坐标等于或接近圆柱的网格网格坐标(这将导致非常精细的网格 = 更多点),我很难将“V”值分配给它们对应的坐标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2013-05-29
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多