我如何在 matlab 中从一组具有 x、y 和 z 坐标的点生成体素网格
How I can generate a voxel mesh from a set of points with x, y, and z coordinates in matlab
我有一个 excel 文件,其中包含来自 Abaqus 模拟的节点坐标。现在我想在 Matlab 或 Python 中从这些点重建二维体素网格或像素网格。我读到的一种方法是使用具有所需分辨率的零矩阵并填充它,但我真的不知道如何实现它。
这是 link 显示我的 excel 文件的结构。
结果应该像这张图片一样基于像素:
您可以使用 meshgrid
to generate coordinates of nodes of mesh. Also use pdist2
来计算两组点(例如网格节点和点)的成对距离。
% generate some random points
n = 20;
mind = -10;
maxd = 30;
P = rand(n, 2) * (maxd - mind) + mind;
% generate grid
d = 0.25; % distance between two pixels in your metric
X = mind:d:maxd;
Y = X;
[XX, YY] = meshgrid(X, Y);
% find closest grid cell to each point
[~, imind] = pdist2([XX(:), YY(:)], P, 'seuclidean' ,'Smallest',1);
% generate equivalent image
I = false(length(Y), length(X));
I(imind) = true;
% display results
subplot 121, scatter(P(:, 1), P(:, 2));
xlim([mind maxd]); ylim([mind maxd]); title('Points')
subplot 122, imagesc('XDATA', X, 'YDATA', Y, 'CDATA', I);
xlim([mind maxd]); ylim([mind maxd]); title('Equivalent Pixels')
但是,您需要确定一些常量,例如minx
、maxx
、miny
、maxy
和 d
。更新它以支持 3D 是微不足道的。 meshgrid
和 pdist2
都支持 3D。除了结果也将是一个 3D 矩阵。您可以使用 implay
或 slice
来显示此类图像。
我有一个 excel 文件,其中包含来自 Abaqus 模拟的节点坐标。现在我想在 Matlab 或 Python 中从这些点重建二维体素网格或像素网格。我读到的一种方法是使用具有所需分辨率的零矩阵并填充它,但我真的不知道如何实现它。
这是 link 显示我的 excel 文件的结构。
结果应该像这张图片一样基于像素:
您可以使用 meshgrid
to generate coordinates of nodes of mesh. Also use pdist2
来计算两组点(例如网格节点和点)的成对距离。
% generate some random points
n = 20;
mind = -10;
maxd = 30;
P = rand(n, 2) * (maxd - mind) + mind;
% generate grid
d = 0.25; % distance between two pixels in your metric
X = mind:d:maxd;
Y = X;
[XX, YY] = meshgrid(X, Y);
% find closest grid cell to each point
[~, imind] = pdist2([XX(:), YY(:)], P, 'seuclidean' ,'Smallest',1);
% generate equivalent image
I = false(length(Y), length(X));
I(imind) = true;
% display results
subplot 121, scatter(P(:, 1), P(:, 2));
xlim([mind maxd]); ylim([mind maxd]); title('Points')
subplot 122, imagesc('XDATA', X, 'YDATA', Y, 'CDATA', I);
xlim([mind maxd]); ylim([mind maxd]); title('Equivalent Pixels')
但是,您需要确定一些常量,例如minx
、maxx
、miny
、maxy
和 d
。更新它以支持 3D 是微不足道的。 meshgrid
和 pdist2
都支持 3D。除了结果也将是一个 3D 矩阵。您可以使用 implay
或 slice
来显示此类图像。