gpt4 book ai didi

matlab - 矢量化 3d 数组

转载 作者:行者123 更新时间:2023-12-04 04:37:40 26 4
gpt4 key购买 nike

我正在尝试矢量化 for循环。我在 [68x200] 中列出了一组坐标矩阵称为 plt2 ,我在 [400x1] 中列出了另一组坐标矩阵称为 trans1 .我想创建一个名为 dist1 的三维数组,其中在 dist1(:,:,1)我拥有 plt2 的所有值第一个值为 trans1减去,一直到 trans1 的结尾.我有一个像这样的 for 循环,它可以工作但速度很慢:

for i=1:source_points;
dist1(:,:,i)=plt2-trans1(i,1);
end

感谢您的帮助。

最佳答案

如果我理解正确,这可以通过 bsxfun 轻松解决。 :

dist1 = bsxfun(@minus, plt2, shiftdim(trans1,-2));

或者,如果速度很重要,请使用这个等效版本(感谢@chappjc),它似乎要快得多:
dist1 = bsxfun(@minus, plt2, reshape(trans1,1,1,[]));

一般来说, bsxfun对于这种情况,这是一个非常有用的功能。它的行为可以总结如下:对于它的两个输入数组中的任何一个的任何单一维度,它应用一个“隐式” for沿相同维度循环到另一个数组。见 doc了解更多详情。

关于matlab - 矢量化 3d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com