我正在进行一个项目,我们以线性方式进行测量并旋转样本以生成3D曲面图。
数据来自极坐标格式,我们有4个数据集:
theta = 0 , r = -20 -- 20
theta = 45 , r = -20 -- 20
theta = 90 , r = -20 -- 20
theta = 135, r = -20 -- 20
我可以通过用sin和cos生成x和y向量并根据该矩阵绘制结果来将其转换为笛卡尔点。
因此,一个示例“准备绘制”矩阵集如下所示:
x [4x21 double]
-20 -18 -16 ..
-14.14 -12.73 -11.31 ..
0 0 0 ..
..
y [4x21 double]
0 0 0 ..
-14.14 -12.73 -11.31 ..
-20 -18 -16 ..
..
z [4x21 double]
.224 .281 .320 ..
.228 .280 .312 ..
.282 .349 .377 ..
..
Matlab正在连接我想要的向量。但是,它没有将90度旋转连接到135度旋转。我如何让它做到这一点?
生成类似于上述示例的图形的基本代码如下:
theta = [ 0 , -45 , -90 , -135];
r = -20 : 2 : 20;
for i = 1 : 4
xc(i,:) = r .* cosd(theta(i));
yc(i,:) = r .* sind(theta(i));
zc(i,:) = [[0 : 0.1 : 0.9] , [1 : -0.1 : 0]];
end
figure
surf(xc,yc,zc);
您只需显式地执行θ=-180。就像绘制不会环绕并连接第一个点和最后一个点一样,冲浪也不会将第一条“边”连接到最后一条“边”。将θ设为[0-45-90-135-180]并将θ设为i=1:5,这应该是好的。
您会发现颜色看起来有点奇怪,这可能会更好,具体取决于应用程序:surf(xc,yc,zc,'FaceColor','interp')
。
创建数据的更好方法可能是
[R,TH]=meshgrid(r,theta);
[xc,yc]=pol2cart(TH*pi/180,R);
zc = repmat([[0 : 0.1 : 0.9] , [1 : -0.1 : 0]],length(theta),1);
问题内容: 我有一个3元组的列表,表示3D空间中的一组点。我想绘制一个覆盖所有这些点的表面。mplot3d软件包中的plot_surface函数需要X,Y和Z作为二维数组作为参数。plot_surface是绘制表面的正确函数,如何将数据转换为所需格式? 问题答案: 对于曲面,它与三元组列表略有不同,您应该为2d数组中的域传递网格。 如果您只拥有3d点列表而不是某些函数f(x, y) -> z,那么
请指导我如何在MATLAB中实现这一点。 提前谢了。
我正在研究一个算法,用来在图中找到所有的连接点,这里给出了。 这是计算艺术点数的函数: 现在我很难理解这段代码的某些行。 上面的陈述是否意味着,由于顶点“v”是顶点“u”的直接子点,如果有某个顶点是可以从“v”或“v”本身到达的,并且是在“u”之后发现的,那就意味着存在一个后边。 我的解释对吗?如果我错了请给我正确的解释。
我正在尝试使用UDP协议将数据从python实时传输到matlab(正如本文所建议的:从python到matlab的实时数据传输)。 现在,这就是我所拥有的,它确实起作用了: 在python上(发送方): 在matlab(收件人): 从matlab: 有艾迪亚吗?