How can i assign sybolic values to ymbolic variables in an symbolic matrix?

1 次查看(过去 30 天)
Hi folks,
I actually want to write a function for any kind of rotational robot. The function should give back the Translation Matrixes and the Jacobi Matrix. To do that I need to differentiate my final T Matrix.
So my code shoudl do this:
Pseudo Code:
n = 10
c_array = create_symbolic_array('c',[1 n]) %% c1 c2 ... cn
t_array = create_symbolic_array('th', [1 n]) %% th1 th2 ... thn
%% Loop to assign c1 = cos(th1)
loop(1:1:n)
c_array(1,n) = cos(th(1,n))
%result should be
c1 = cos(th1)
c2 = cos(th2)
.
.
.
cn = cos(thn)
cn should be an symbolic type with the value assigned cos(th1), if it isnt an array its fine, but i need c1 c2 c3 and so with the cos(thn) assigned,
I tried a lot of things.
Here one of my examples coded in MATLAB
% test data
a = [100 100 100 100]
alpha = [90 90 90 90]
d = [0 10 10 10]
theta1=[0 0 0 0]
sz_a = size(a,2);
sz_alpha = size(alpha,2);
sz_d = size(d,2);
sz_th = size(theta1,2)
theta = sym('th', [1,sz_th])
cosinusse = sym('c', [1,sz_th])
sinussse = sym("s", [1,sz_th])
T0_n = zeros(sz_th)
Ti_j= zeros(sz_th)
%symbolic array
syms('c',[1 4])
%% Of course this needs to be looped, but sprintf do not assign it is only printing
sprintf("%s=%d", strcat('c', num2str(1)), cos(theta1(1,1)))
% also I tried
for i = 1:sz_th
c(1,i) = cos(theta(1,i))
end
for i = 1:sz_th
sprintf("%s=%d", strcat('c', num2str(i)), cos(theta1(1,i)))
end
I hope you guys can help me, i would be really happy.

回答(1 个)

Steven Lord
Steven Lord 2021-12-2
Can you create variables named c1, c2, c3, etc.? Yes.
Should you do this? The general consensus is no. See that Answers post for an explanation and alternatives.
In this particular case, wherever you would have used c1 instead use c(1).
c = sym('abc', [1, 5])
c = 
y = c(1)+c(3)
y = 
subs(y, c, (1:5).^2)
ans = 
10

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by