# Why does the SUBS command change the size of the expression incorrectly?

1 回表示 (過去 30 日間)
Fredrik Smith 2022 年 2 月 9 日
コメント済み: Paul 2022 年 2 月 10 日
Why does SUBS change the size of the expression even when the variable which would change the size of the expression is not present? For example
syms a b c d e
f = sym('f', [2,2])
f =
g = a + b;
subs(g, {a,b,c}, {d,e,f})
ans =
Clearly the result should be a 1x1 sym, not a 2x2?
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Paul 2022 年 2 月 10 日
At the risk of stating the obvious, it appears that the expansion of g is determined by the fact that f is in the set of replacement variables, regardless of whether or not f is actually substituted into g. The doc is silent as far as I can tell on what the behavior should be when a variable to be substituted, in this case e, does not appear in the expression.

サインインしてコメントする。

### 回答 (1 件)

Highphi 2022 年 2 月 9 日

it's because of the way you're passing in your substitution variables
{ } ~= [ ]
syms a b c d e
f = sym('f', [2, 2])
f =
g = a + b;
subs(g, [a, b], [d, e])
ans =
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Fredrik Smith 2022 年 2 月 10 日
Thank you for taking the time to answer! And yes I could just not pass f in as a variable as you have done, however that defeats the purpose as that was the whole point of my question.
When creating functions from symbolic expressions via 'matlabFunction' it is useful to have a standard set of variables using the 'vars' option to retain the correct order, which means that I often end up passing in many variables which are not used. It is useful to use a cell since sometimes I would like to substitute a scalar for a matrix.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeAssumptions についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by