MATLAB Answers

How to insert values for a symbolic variable

221 ビュー (過去 30 日間)
John Miller
John Miller 2020 年 6 月 22 日
コメント済み: madhan ravi 2020 年 6 月 22 日
I'm calculating some gradients with symbolic variables and after that I want to insert values for the variables.
So I have a function depandent of multiple variables x(1),..., x(20)
and I want to insert some values for the variables, something like
etc.
such that the function replaces all the x(1) values with 10 and x(20) values with 14
How is that done? Should be simple but I can't find anything helpful explaining how to solve this

  0 件のコメント

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

採用された回答

madhan ravi
madhan ravi 2020 年 6 月 22 日
subs(f, {x1, x20}, {10, 14})

  10 件のコメント

表示 7 件の古いコメント
madhan ravi
madhan ravi 2020 年 6 月 22 日
P.S: By the way stop adding answers just to make a comment, it makes the thread inconsistent.
This is what happens when you refuse to read something.
clear all
x = sym('x_%d',[13 1],'real');
y = sym('y_%d',[3 1],'real');
f1 = x(1)*x(2)
x_vars = num2cell(x(1:2));
x_vals(1)=1.13
x_vals(2)=1.23
x_vals = num2cell(x_vals)
Wanted = subs(f1, {x_vars{:}}, {x_vals{:}})
John Miller
John Miller 2020 年 6 月 22 日
Thank you. I am not refusing to read, but the statement
x_vals = num2cell(1:20); % example values for x vector
was not well made in order to understand that each value has to be converted later on

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

その他の回答 (1 件)

John Miller
John Miller 2020 年 6 月 22 日
>> x = sym('x_%d',[13 1],'real');
>> y = sym('y_%d',[3 1],'real');
>> f1 = x(1)*x(2)
f1 =
x_1*x_2
>> x_vars = num2cell(x);
>> x_vals(1)=1.13
x_vals =
1.1300
>> x_vals(2)=1.23
x_vals =
1.1300 1.2300
So far so good
>> subs(f1, {x_vars{:}}, {x_vals{:}})
Brace indexing is not supported for variables of this type.
>> subs(f1, {x_vars}, {x_vals})
Error using sym/subs>normalize (line 231)
Entries in second argument must be scalar.
Error in sym/subs>mupadsubs (line 157)
[X2,Y2,symX,symY] = normalize(X,Y); %#ok
Error in sym/subs (line 145)
G = mupadsubs(F,X,Y);
It is possible to pass in one variable at the time, but that is not what I'm trying to do

  0 件のコメント

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

Community Treasure Hunt

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

Start Hunting!

Translated by