# How to call element of matrix of symbolic variables

294 views (last 30 days)
Hazim Nasir on 16 Jul 2018
Commented: Walter Roberson on 20 Oct 2022
I have two symbolic variables
syms th1(t) Lc1
and generated a matrix in terms of th(t) and Lc1
tc1(t) =
[ cos(th1(t)), -sin(th1(t)), 0, Lc1*cos(th1(t))]
[ sin(th1(t)), cos(th1(t)), 0, Lc1*sin(th1(t))]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]
now when I try to call the first three elements of the last column
pc1 = tc1(1:3,4);
I got this error:
Error using symfun/subsref (line 169)
Symbolic function expected 1 inputs and received 2.
Error in Fk (line 10)
pc1 = tc1(1:3,4);
thanks

Walter Roberson on 17 Jul 2018
It is not possible to index the entries of a symbolic function that computes a matrix.
The closest you can get is to call the function passing in variables for the parameters, get an array output, index into the array, and use the resulting expression or turn it into a function if needed.
Walter Roberson on 20 Oct 2022
@ermiyas lakew I think you might be looking for argnames

### More Answers (1)

Nathan Hardenberg on 19 May 2022
Since the code answer is a bit hidden in the comments I'm posting the solution as full code here:
syms th1(t) Lc1
tc1(t) = [
cos(th1(t)), -sin(th1(t)), 0, Lc1*cos(th1(t));
sin(th1(t)), cos(th1(t)), 0, Lc1*sin(th1(t));
0, 0, 1, 0;
0, 0, 0, 1;]
pc1 = tc1(t); % call the function with t first
pc1 = pc1(1:3,4) % now you can index
##### 2 CommentsShowHide 1 older comment
Stu on 19 Oct 2022
Wow, thanks for that. It's beautiful.
Now I can pass a vector (which itself contains symbolic variables) into another symbolic function which requires that vector input.

### Categories

Find more on Linear Algebra in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by