如何将两个矢量分量数组组合成matlab中的一个矢量数组
How can I combine two arrays of vector components into an array of vectors in matlab
我有两个大小相同的数组,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
的参数调用,制作向量数组会比创建广告更快更方便在调用它的每次迭代中,每个向量的 hoc 向量。
谢谢
为进一步清楚起见进行编辑:
假设我有一个数组
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 个元素...
感谢您一直以来的帮助。
您可以创建两个图层。一层包含 ux,另一层包含 uy.
ux = [10 8 7;6 5 4];
uy = [1 2 3;4 5 6];
xy(:,:,1) = ux; // [10 8 7;6 5 4]
xy(:,:,2) = uy; // [1 2 3;4 5 6]
aaa=xy(1,1,:); // [10 1]
bbb=xy(1,2,:); // [8 2]
dot(aaa,bbb)
结果将是:
82
如果您真的希望它是一个元胞向量,其中每个元素都是一个 [1 x 2]
向量,请使用 mat2cell
:
ux = rand(15,1);
uy = rand(15,1);
U = [ux, uy];
K = mat2cell(U,ones(size(U,1),1),2);
但正如其他人指出的那样,U = [ux, uy]
就足够了,因为您只需调用 U(1,:)
即可获得完全相同的结果,而不必担心单元格。
如果您想要计算两个向量的 dot
乘积,arrayfun(@dot,ux,uy)
会按元素计算。
我有两个大小相同的数组,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
的参数调用,制作向量数组会比创建广告更快更方便在调用它的每次迭代中,每个向量的 hoc 向量。
谢谢
为进一步清楚起见进行编辑:
假设我有一个数组
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 个元素...
感谢您一直以来的帮助。
您可以创建两个图层。一层包含 ux,另一层包含 uy.
ux = [10 8 7;6 5 4];
uy = [1 2 3;4 5 6];
xy(:,:,1) = ux; // [10 8 7;6 5 4]
xy(:,:,2) = uy; // [1 2 3;4 5 6]
aaa=xy(1,1,:); // [10 1]
bbb=xy(1,2,:); // [8 2]
dot(aaa,bbb)
结果将是:
82
如果您真的希望它是一个元胞向量,其中每个元素都是一个 [1 x 2]
向量,请使用 mat2cell
:
ux = rand(15,1);
uy = rand(15,1);
U = [ux, uy];
K = mat2cell(U,ones(size(U,1),1),2);
但正如其他人指出的那样,U = [ux, uy]
就足够了,因为您只需调用 U(1,:)
即可获得完全相同的结果,而不必担心单元格。
如果您想要计算两个向量的 dot
乘积,arrayfun(@dot,ux,uy)
会按元素计算。