# How to solve an equation with two matrices?

2 visualizzazioni (ultimi 30 giorni)
Jimmy Neutron il 13 Dic 2021
Risposto: Gargi Patil il 21 Dic 2021
I am trying to solve for all the unknowns in a matrix where I know the output of the matrix. This is what I mean: I have X and A and based on the two I want to find theta1 alpha d a
syms theta1 alpha d a
X = [ nan nan -3/4 1;
nan 1/4 nan sqrt(3);
0 nan nan 1/3;
0 0 0 1]
A = [ cos(theta1) -sin(theta1)*cos(alpha) sin(theta1)*sin(alpha) a*cos(theta1);
sin(theta1) cos(theta1)*cos(alpha) -cos(theta1)*sin(alpha) a*sin(theta1);
0 sin(alpha) cos(alpha) d;
0 0 0 1]
idx = find(~isnan(X));
solve(X(idx)==A(idx), [ theta1 alpha d a])
##### 3 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Torsten il 13 Dic 2021
S = solve(X(idx)==A(idx), [ theta1 alpha d a])
What is the MATLAB class of S ?

Accedi per commentare.

### Risposte (1)

Gargi Patil il 21 Dic 2021
Hi,
As suggested in the comments, the result can be stored in a variable S. S will be a struct with the fields theta1, alpha, d and a as shown below:
syms theta1 alpha d a
X = [ nan nan -3/4 1;
nan 1/4 nan sqrt(3);
0 nan nan 1/3;
0 0 0 1];
A = [ cos(theta1) -sin(theta1)*cos(alpha) sin(theta1)*sin(alpha) a*cos(theta1);
sin(theta1) cos(theta1)*cos(alpha) -cos(theta1)*sin(alpha) a*sin(theta1);
0 sin(alpha) cos(alpha) d;
0 0 0 1];
idx = find(~isnan(X));
S = solve(X(idx)==A(idx), [theta1 alpha d a])
S = struct with fields:
theta1: [2×1 sym] alpha: [2×1 sym] d: [2×1 sym] a: [2×1 sym]
You can access the possible solutions as follows:
S.a(:, 1)
ans =
##### 0 CommentiMostra -1 commenti meno recentiNascondi -1 commenti meno recenti

Accedi per commentare.

### Categorie

Scopri di più su Ordinary Differential Equations in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by