How to substitute multiple values in symbolic matrix?

64 views (last 30 days)
Hi, How to substitute multiple values in symbolic matrix? With function subs, we can substitute only single value in expression. Writing nested subs(subs(...)) can work but it becomes tedious. Here is sample code:
syms x y z w
N=[ 1y+y+z,x/2 - y/3 + z/3, x*y, x+z];
Is there any way to substitute values to w,x,y,z in single line? I guess then I have to define variables like x(1), x(2) etc. and have to use for loop to change values. Is this approach correct or is there any better way?

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 29 Nov 2013
syms x y z w
N=[ w+y+z,x/2 - y/3 + z/3, x*y, x+z]
X = sym(['[',sprintf('X(%d) ',1:4),']'])
out = subs(N,[x, y, z, w],X)
  2 Comments
Karan Gill
Karan Gill on 8 Dec 2016
That answer is wrong. Please do not use string input to sym. Instead:
>> syms x y z w
N=[ 1*y+y+z,x/2 - y/3 + z/3, x*y, x+z];
vars = [w x y z];
newVars = sym('x%d',[1 4]);
subs(N,vars,newVars)
ans =
[ 2*x3 + x4, x2/2 - x3/3 + x4/3, x2*x3, x2 + x4]
Much easier to read and understand. Look up the doc for sym to understand the command I used: https://www.mathworks.com/help/symbolic/sym.html

Sign in to comment.

More Answers (1)

Youssef El Seblani
Youssef El Seblani on 31 Mar 2018
Edited: Walter Roberson on 31 Mar 2018
clc
clear
syms x y z w
N=[ w+y+z,x/2 - y/3 + z/3, x*y, x+z]
A=sym('X',[1,4])
N(A) = subs(N,[x, y, z, w],A)
for example
N(1,2,3,4)
  2 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!