关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic

6年前关闭。



Improve this question




我正在寻找有关 MATLAB 中矢量化(循环)的任何好的教程。

我有一个非常简单的算法,但它使用了两个 for 循环。我知道矢量化它应该很简单,我想学习如何做到这一点,而不是向您询问解决方案。

但是为了让您知道我遇到了什么问题,以便您能够建议展示如何解决类似问题的最佳教程,以下是我的问题的概述:

B = zeros(size(A));    % //A is a given matrix.
for i=1:size(A,1)
   for j=1:size(A,2)
      H = ... %// take some surrounding elements of the element at position (i,j) (i.e. using mask 3x3 elements)
      B(i,j) = computeSth(H); %// compute something on selected elements and place it in B
   end
end

所以,我不是在寻求解决方案。我在要求一个很好的教程,在 MATLAB 中向量化循环的例子。我想学习如何做并自己做。

最佳答案

以下是我经常链接到的一些 MathWorks 教程作为该主题的引用:

  • Code Vectorization Guide
  • Techniques for Improving Performance: Vectorizing Loops

  • 以下是 Loren 的一篇博客文章,其中对特定示例问题的代码矢量化进行了很好的演练:
  • Speeding Up MATLAB Applications

  • 您作为示例给出的特定类型的问题涉及处理给定矩阵的子矩阵,可以以不同的方式进行矢量化,这在很大程度上取决于您正在执行的操作类型。您可以使用 CONV2FILTER2 代替嵌套的 for 循环。 Image Processing Toolbox 中还有一些处理 neighborhood and block processing of matrices 的函数,例如 NLFILTERBLOCKPROC 。这些函数的文档应该可以帮助您弄清楚如何使用它们作为矢量化代码的一种方式。

    关于matlab - MATLAB 中的矢量化简介 - 有什么好的教程吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2867901/

    10-13 02:34