Java で基本的なプログラミングを学んだ後、現在のアルゴリズム コースから 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 のすべてのベクトル化のトリックを学習する唯一の方法は、上記のようなさまざまなシナリオでそれらがどのように使用されるかを確認することです。