gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:41 24 4
gpt4 key购买 nike

在学习了 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/

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