【发布时间】:2017-04-17 16:32:04
【问题描述】:
我有两个大小相同的数组,ux 和 uy,我想将它们组合成一个向量元胞数组,这样U(1,1) 包含一个由uy(1,1),ux(1,1) 和`numel(U) 组成的向量=numel(ux)=numel(uy)'
分量ux和uy代表图像梯度的单位向量。组件数组是通过元素乘法创建的:
ux = I1x./I1mag;
uy = I1y./I1mag;
我需要能够多次访问每个向量,并将它们作为dot 和cross 的参数调用,并且创建一个向量数组会比为每个向量创建一个临时向量更快、更方便每次迭代都会调用它。
谢谢
为进一步清晰编辑:
假设我有一个数组
uy = (1,2,3;4,5,6);
和另一个相同大小的数组
ux = (9,8,7;6,5,4);
我需要 yx 向量,所以对于我们的示例来说是
([1,9], [2,8], [3,7]; [4,6], [5,5], [6,4])
请问最有效的方法是什么?我将获得每个像素与其相邻像素的点积,反之亦然,因此每个向量将被使用 16 次,整个数组包含大约 10^4 或 10^5 个元素...
感谢您一直以来的帮助。
【问题讨论】:
-
您希望元胞数组为
numel(uy) x numel(ux)吗? -
假设
ux有一列[ux, uy]。否则,[ux', uy']。或者,[ux; uy]' -
感谢您的建议。我将编辑帖子以澄清-我想要numel(U)= numel(ux)= numel(uy),但是U的每个单元格都包含一个向量[uy,ux]。
-
为什么需要一个元胞数组?如果所有元素的大小都相同,则多维数组会更容易处理。
-
我需要能够调用点积和叉积的向量......能够得到像点(U(x,y),U(a,b))这样的东西会很方便.否则我可以将它称为 U1 = [U(x,y,1), U(x,y,2)] 然后 dot(U1, U2),但这不会更慢吗?
标签: arrays matlab vector cell-array