3

Matlabでシンボリック変数を呼び出すためにループインデックスを使用する方法はありますか? たとえば、シンボリック式 "x1+x2+x3" を "y" に格納することを目的とする次のコードを考えてみましょう。

syms x1 x2 x3
y = 0;

for i = 1:3
    y = y + xi;
end

各反復で Matlab が "y = y + xi" を読み取り、"y = y + x1"、"y = y + x2"、"y = y + x3」、とにかくこのあたりにあるの?

ありがとう。

4

2 に答える 2

3

番号付きシンボリック変数を少し異なる方法で作成できる場合は、これをお勧めします。

x = sym('x',[1 3]);  % or: syms x1 x2 x3; x = [x1 x2 x3];
y = x(1);
for i = 2:numel(x)
    y = y+x(i);
end

もちろん、この単純な例では、forループ全体と他のすべてを次のように置き換えることができます。

y = sum(sym('x',[1 3]));

詳細については、ドキュメントを参照しsymてください。

編集: @ pm89 が指摘するように、1 行 3 列のシンボリック ベクトルを割り当てることにより、もちろんワークスペース内のシンボリック変数、、およびにx直接アクセスすることはできませんが、示されているようにそれらにインデックスを付ける必要があることに注意してください。 . これは、配列やセルの操作に似ており、ベクトル化された 2 番目の例で示したのと同じ利点が数多くあります。x1x2x3

于 2013-06-27T17:47:41.287 に答える