matlab - 避免 MatLab 代码中的循环(质心权重)

标签 matlab loops interpolation vectorization

在学习了 Java 的基本编程之后,我发现在我当前的算法类(class)中过渡到 MatLab 最困难的部分是避免循环。我知道有很多聪明的方法可以在 MatLab 中对操作进行矢量化处理,但我的思想“陷入”了循环思考,以至于我发现很难直观地看到我可以如何对代码进行矢量化处理。一旦向我展示了如何完成,这对我来说就很有意义,但我自己却看不到那么容易。目前我有以下代码用于查找拉格朗日插值中使用的重心权重:

function w = barycentric_weights(x);
% The function is used to find the weights of the
% barycentric formula based on a given grid as input.

n = length(x);
w = zeros(1,n);

% Calculating the weights
for i = 1:n
    prod = 1;
    for j = 1:n
        if i ~= j
            prod = prod*(x(i) - x(j));
        end
    end
    w(i) = prod;
end
w = 1./w;

我很确定在 MatLab 中一定有更聪明的方法来做到这一点,但我就是想不出。如果有人有任何提示,我将非常感激 :)。我要学习 MatLab 中所有矢量化技巧的唯一方法就是看看它们是如何在上述各种场景中使用的。

最佳答案

必须在 matlab 中发挥创意才能避免 for 循环:

[X,Y] =meshgrid(x,x)
Z = X - Y
w =1./prod(Z+eye(length(x)))

关于matlab - 避免 MatLab 代码中的循环(质心权重),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13077409/

相关文章:

c++ - 如何在 Matlab 中分析 MEX 函数

python - 用于 Python 的 Parfor

reactjs - React Native Lottie - 动画结束时反转

c# - "Loop"在 C# 中不工作

javascript - 插入 HSL 颜色

matlab - 如何在所有回调中使用 Matlab App Designer 中的变量

php - 循环表达式引擎条目?

null - Dygraph 应在图例中显示内插值

python - 为什么 scipy 不对并置值插入平均值?

emacs - 如何在 GNU Emacs 中安装 MATLAB 模式?