Azzera filtri
Azzera filtri

How to insert variables (string) in MATLAB function

3 visualizzazioni (ultimi 30 giorni)
function R=rotmatx(axis,q)
if axis=='x'
R=[1 0 0;0 cos(q) -sin(q); 0 sin(q) cos(q)];
elseif axis=='y'
R=[cos(q) 0 sin(q); 0 1 0; -sin(q) 0 cos(q)];
elseif axis=='z'
R=[cos(q) -sin(q) 0;-sin(q) cos(q) 0; 0 0 1];
else
fprintf('invalid axis');
end
so, i want the output when i call this function
rotmatx('x','t')
the output should be
[1, 0, 0]
[0, cos(t), -sin(t)]
[0, sin(t), cos(t)]
but there is error.
Can someone please help me out for this.
Thank You.

Risposta accettata

Walter Roberson
Walter Roberson il 25 Ott 2021
rotmatx('y', 'p')
ans = 
rotmatx('z', pi/6)
ans = 
function R=rotmatx(axis,q)
Q = sym(q);
if axis=='x'
R=[1 0 0;0 cos(Q) -sin(Q); 0 sin(Q) cos(Q)];
elseif axis=='y'
R=[cos(Q) 0 sin(Q); 0 1 0; -sin(Q) 0 cos(Q)];
elseif axis=='z'
R=[cos(Q) -sin(Q) 0;-sin(Q) cos(Q) 0; 0 0 1];
else
fprintf('invalid axis');
end
end

Più risposte (1)

KSSV
KSSV il 25 Ott 2021
Modificato: KSSV il 25 Ott 2021
syms t
R=[1 0 0;0 cos(t) -sin(t); 0 sin(t) cos(t)]
R = 
  3 Commenti
KSSV
KSSV il 25 Ott 2021
You can follow the above method and write into a function.
Pk Verma
Pk Verma il 25 Ott 2021
Do you mean this
function R=tst(t)
syms t
R=[1 0 0;0 cos(t) -sin(t); 0 sin(t) cos(t)];
end
now
tst('p')
now output is...
[1, 0, 0]
[0, cos(t), -sin(t)]
[0, sin(t), cos(t)]
but output should be
[1, 0, 0]
[0, cos(p), -sin(p)]
[0, sin(p), cos(p)]
if i done anything wrong then please write function and then function calling code.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by