在學習了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