在学习了Java中的基本编程之后,我发现在我当前的算法过程中转换到MatLab中最困难的部分是避免循环。我知道有很多聪明的方法可以在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中学习所有向量化技巧的唯一方法就是看看它们在诸如上面的各种场景中如何使用。
非常感谢!非常感谢您的意见。 Java对我来说更直观,我猜:) – Kristian