假设我有以下向量:
x = [1 2 3 4];
y = [4 5 6];
z = [7 8 9];
我想将这些合并到网格中,然后获取x,y,z坐标以及nodeCount。我有代码来自:How do I obtain the count of corner points in a matrix as well as store their positions in an array?
如下:
ny = length(y) - 1;
nx = length(x) - 1;
nz = length(z) - 1;
%# Obtain grid vectors
[ygv, xgv, zgv] = meshgrid(1:ny, 1:nx, 1:nz);
coords = [ygv(:), xgv(:), zgv(:)]
%# Obtain node counts
nodeCount = ny*nx*(coords(:,3) - 1) + nx*(coords(:,2) - 1) + coords(:,1)
%# Obtain coordinates
x_coord = mod(nodeCount - 1, nx) + 1;
y_coord = mod((nodeCount - x_coord)/nx, ny) + 1;
z_coord = (nodeCount - x_coord - nx*(y_coord - 1))/nx/ny + 1;
我的预期结果是:
coords = [1 1 1
1 2 1
1 3 1
2 1 1
2 2 1
2 3 1
1 1 2
1 2 2
1 3 2
2 1 2
2 2 2
2 3 2]
nodeCount = [1;2;3;4;5;6;7;8;9;10;11;12]
y_coord = [1;1;1;2;2;2;1;1;1;2;2;2]
x_coord = [1;2;3;1;2;3;1;2;3;1;2;3]
z_coord = [1;1;1;1;1;1;2;2;2;2;2;2]
但是,代码只会返回cords, ygv, xgv, and zgv
的正确结果,但不会返回其他结果。我理解nodeCount
算不上。 coords
中的行数。无论如何,我怀疑nodeCount
公式可能是错误的,这会影响后续的计算。请问有没有按预期获得nodeCount
的方法?谢谢!
答案 0 :(得分:0)
糟糕!我只知道错误与我的坐标排序有关。考虑y,x,z排序的正确nodeCount公式应为:
nodeCount = ny*nx*(coords(:,3) - 1) + nx*(coords(:,1) - 1) + coords(:,2)
有了它,其他所有事情都有效。