Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何获得矩阵中角点的计数并将其位置存储在数组中?_Matlab_Image Processing - Fatal编程技术网

Matlab 如何获得矩阵中角点的计数并将其位置存储在数组中?

Matlab 如何获得矩阵中角点的计数并将其位置存储在数组中?,matlab,image-processing,Matlab,Image Processing,我被告知矩阵的坐标不一定用中心点表示,也可以用角点表示。然而,我真的不知道该怎么做。尽管如此,我有如下所示的与中心点和角点的矩阵符号相关的信息 以及: Nr=ny+1;%这是中心行的总数 Nc=nx+1;%这是中心柱的总数 而且 ny=Nr-1;%这是行的总行数 nx=Nc–1;%这是行列的总数 T=ny*nx;%其中T=内部节点的总数 nodeCount=nx(iy-1)+jx 计数顺序是逐行的,即从节点开始:(1,1)到(1,nx),然后是(2,1)到(2,nx),等等。请注意,在给定的图

我被告知矩阵的坐标不一定用中心点表示,也可以用角点表示。然而,我真的不知道该怎么做。尽管如此,我有如下所示的与中心点和角点的矩阵符号相关的信息

以及:

Nr=ny+1;%这是中心行的总数
Nc=nx+1;%这是中心柱的总数

而且

ny=Nr-1;%这是行的总行数
nx=Nc–1;%这是行列的总数

T=ny*nx;%其中T=内部节点的总数
nodeCount=nx(iy-1)+jx

计数顺序是逐行的,即从节点开始:
(1,1)到(1,nx)
,然后是
(2,1)到(2,nx)
,等等。请注意,在给定的图像(6x6矩阵)中,节点计数有25个数组元素

现在,我需要获得nodeCount,这样它就包含了一个数组,其中包含了从1到T的所有内部节点,按照指定的计数顺序进行计数。然后,我将从nodeCount中的每个索引中获得x和y坐标


请告诉我,我需要帮助/建议/建议来解决这个问题。非常感谢。

由于评论中的讨论有点长,我决定回答:

1) 创建坐标(从头开始)

2) 创建节点计数(从头开始)

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];
编辑:当然,3D也可以。这取决于如何计算节点。一种方法是(未经测试,但我想你明白了):


您的描述有点模糊,is
[x,y]=meshgrid(1:nx,1:ny);coords=[x(:),y(:)]
您需要什么?非常感谢@Florian。很抱歉这么晚才回复。是的,您的代码为我提供了
x和y坐标
,这是问题的第二部分。但是,我仍然需要查找
nodeCount
。谢谢你的帮助。按照你的编写方式,如果我理解正确,nodeCount应该是
nodeCount=nx*(coords(:,2)-1)+coords(:,1)
。是的,没错。我确实从中得到了nodeCount,但是从整个代码的工作方式来看,我需要有nodeCounts,然后从nodeCount中提取x和y坐标以进行进一步的计算。我希望你明白我的意思?我希望我明白你的意思:我做了一个回复,显示了所有4种变体:从头开始创建
nodeCount
coords
,并将其中一种转换为另一种。最后一个问题是4):将nodeCount转换为coords.Perfect!。非常感谢你!只是一个想法。。。我想知道是否有可能进入第三维度。你知道我怎么才能拿到nodeCount和它的坐标吗?哦!非常感谢。我会马上查出来并让你知道。干杯你好,弗洛里安。我可以私下跟你聊聊吗?嗯,如果你答应不给我发代码检查,那好吧。;-)
nodeCount = reshape(reshape((1:nx*ny),nx,ny)',nx*ny,[]);
nodeCount = nx*(coords(:,2)-1) + coords(:,1);
coords_x = mod(nodeCount-1,nx) + 1;
coords_y = (nodeCount - coords_x)/nx + 1;
coords = [coords_x, coords_y];
[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;