有人告诉我,矩阵的坐标不一定用中心点表示,但也可以用角点表示。然而,我真的无法弄清楚如何解决这个问题。尽管如此,我还是将这些信息与中心点和角点的矩阵表示法联系起来,如下所示。
[Nr, Nc] = size(Img);
和
Nr = ny+1; % which is total no. of centre rows
Nc = nx+1; % which is total no. of center columns
此外,
ny = Nr – 1; % which is total no. of line rows
nx = Nc – 1; % which is total no. of line columns
T = ny * nx; % where T = Total no. of internal nodes
nodeCount = nx(iy – 1) + jx;
计数顺序是逐行的,即从节点开始:(1,1) to (1,nx)
然后是(2,1) to (2, nx)
等。请注意,在给定图像(6x6矩阵)中,nodeCount有25个数组元素。
现在,我需要获取nodeCount,使其包含指定计数顺序中从1到T的所有计数内部节点的数组。然后,我将从nodeCount中的每个索引获取x和y坐标。
请,我需要有关如何解决此问题的帮助/建议/建议。非常感谢。
答案 0 :(得分:0)
由于评论中的讨论有点长,我决定回答:
1)创建坐标(从头开始)
[x,y] = meshgrid(1:nx,1:ny);
coords = [x(:),y(:)];
2)创建nodeCount(从头开始)
nodeCount = reshape(reshape((1:nx*ny),nx,ny)',nx*ny,[]);
3)将coords转换为nodeCount
nodeCount = nx*(coords(:,2)-1) + coords(:,1);
4)将nodeCount转换为coords
coords_x = mod(nodeCount-1,nx) + 1;
coords_y = (nodeCount - coords_x)/nx + 1;
coords = [coords_x, coords_y];
编辑:当然,3-D也可以。取决于你如何计算你的节点。一种方法是这样(未经测试,但我想你明白了):
[x,y,z] = meshgrid(1:nx,1:ny,1:nz);
coords = [x(:),y(:),z(:)];
nodeCount = ny*nx*(coords(:,3)-1) + nx*(coords(:,2)-1) + coords(:,1)
coords_x = mod(nodeCount-1,nx) + 1;
coords_y = mod((nodeCount - coords_x)/nx, ny) + 1;
coords_z = (nodeCount - coords_x - nx*(coords_y-1))/nx/ny + 1;