2

インターネットで次のコードを見つけました。私はmatlabが初めてです。このコードをコピーして貼り付けるたびに問題が発生し、エラーメッセージが表示されます。

function[p] = lagrange_interpolation(X,Y)
|
Error: Function definitions are not permitted in this context. 

コード スニペットは次のとおりです。

function[p] = lagrange_interpolation(X,Y)

L = zeros(n);

p = zeros(1,n);


% computing L matrice, so that each row i holds the polynom L_i

% Now we compute li(x) for i=0....n  ,and we build the polynomial 

for k=1:n

    multiplier = 1;

    outputConv = ones(1,1);

    for index = 1:n

        if(index ~= k && X(index) ~= X(k))

            outputConv = conv(outputConv,[1,-X(index)]);

            multiplier = multiplier * ((X(k) - X(index))^-1);

        end

    end

    polynimialSize = length(outputConv);

    for index = 1:polynimialSize

        L(k,n - index + 1) = outputConv(polynimialSize - index + 1);

    end

    L(k,:) = multiplier .* L(k,:);

end

      % continues 

        end
4

1 に答える 1

2

おそらく、関数にランダムなコードを混ぜようとしている可能性があります。M ファイルには次の 2 種類があります。

  • スクリプト - 他のものとは無関係に実行される「ランダムな」コードがあります
  • 関数 - 関数の「古典的な」定義です

2 つを混在させることはできません (これは嘘ですが、今のところは良いことです)。したがって、関数を定義する場合は、.m ファイル内の唯一のコードにする必要があります。

後でこの関数をコマンド ウィンドウまたは別の関数またはスクリプトで使用する必要がありますp = blahblah(bleaurgh);

TL;DR: 関数コードがスクリプト ファイル内の唯一のコードであることを確認し、同じ名前で保存し、別の場所から関数を呼び出します。

于 2012-10-11T16:00:14.627 に答える