# How to assign a symbolic variable to a location inside a matrix?

4 views (last 30 days)
Chris Verhoeven on 13 Jan 2020
Commented: Chris Verhoeven on 13 Jan 2020
I have simplified the problem a little bit.
syms A
x = [A,0;0,0] %this works
y = zeros(2)
y(1,1) = A %THIS DOESNT WORK. WHY NOT?
Since i'm using this in a large function i really need to be able to assign symbolic variable to a matrix using it's row and column number. Please help.

Steven Lord on 13 Jan 2020
In your expression y(1, 1) = A the expression on the left of the equals sign refers to a double array while the expression on the right is a sym array. In order to perform that assignment MATLAB tries to convert the sym array A into a double value. It can't (what's the numeric value of the symbolic variable A?) so it throws an error.
You could either give the variable A a numeric value, so that MATLAB can convert that value into a double to perform the assignment, or you can create y initially as a sym array so assigning the sym array A into a piece of that sym array requires no conversion.
A = sym(4);
y = zeros(2);
y(1, 1) = A % Note that y remains a double array
syms B
y2 = sym(zeros(2)); % or zeros(2, 'sym')
y2(1, 1) = B % No conversion necessary

#### 1 Comment

Chris Verhoeven on 13 Jan 2020
Thank you. With your explenation I understand why my approach didn't work.
Kind regards,
Chris