Effacer les filtres
Effacer les filtres

Evaluating symbolic matrix equations

9 vues (au cours des 30 derniers jours)
Nishanth Rao
Nishanth Rao le 10 Juil 2021
Commenté : zym le 27 Juil 2022
I have a symbolic matrix of size 20x3, which I have created using the sym() function. I have another matrix B which is calculated using certain rows of A, or in general the matrix B is a function of A i.e., . Once I obtain all the numerical entries of A, how can I evaluate B after substituting A with the obtained numerical values?
A = sym('a', [20, 3]); % Create a 20x3 symbolic matrix
% Create a matrix B whose values depend on some function of A's elements
B(1, :) = cross(A(1, :), A(3, :));
B(2, :) = A(5, :) .* A(10, :) .* A(20, :);
% Substitute A with numerical values
A = subs(A, A, rand(20, 3)); % Now, A is a 20x3 matrix with random entries
% How do I evaluate the matrix B?
subs(B) ?
subs(B, A) ? % Both commands aren't working

Réponse acceptée

Nishanth Rao
Nishanth Rao le 10 Juil 2021
After some hit and trials, I found the solution:
A = sym('a', [20, 3]); % Create a 20x3 symbolic matrix
% Create a matrix B whose values depend on some function of A's elements
B(1, :) = cross(A(1, :), A(3, :));
B(2, :) = A(5, :) .* A(10, :) .* A(20, :);
% Substitute B with A, where A is substitued with 20x3 numerical entries:
B = subs(B, A, rand(20, 3));
  7 commentaires
Walter Roberson
Walter Roberson le 23 Juil 2022
It is a syntax restriction. When you use the {} form of subs(), the second parameter must be a cell array in which each entry is a scalar symbolic variable, and the third parameter must be a cell array the same size as the second parameter
A = sym('a', [2, 2]);
B = sym('b', [2, 2]);
C=A*B;
Anum = rand(2,2);
Bnum = rand(2,2);
Ac = num2cell(A);
Bc = num2cell(B);
Anc = num2cell(Anum);
Bnc = num2cell(Bnum);
subs(C, [Ac, Bc], [Anc, Bnc])
ans = 
note here that [Ac, Bc] is a cell array, and [Anc, Bnc] is a cell array the same size
zym
zym le 27 Juil 2022
Thank you for the clarification. This is very useful

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 10 Juil 2021
Read about double.
A = subs(A, A, rand(20, 3));
A = double(A) ;
  3 commentaires
KSSV
KSSV le 10 Juil 2021
subs(B) what you want to substitute here? In the above line you have substituted in A. Also the dimensions of A and B are different. How you want to substitute?
Nishanth Rao
Nishanth Rao le 10 Juil 2021
Modifié(e) : Nishanth Rao le 10 Juil 2021
Please look at the accepted answer. I am sorry if the question isn't clear. For your convenience, I'll explain it here.
I have a symbolic matrix A. Now the matrix B (may have different size than A), is some function of the matrix A. Or to be even clearer, the matrix B depends on some of the elements of A. In general, I can write it mathematically as . Now, lets say from say sensor measurements (for eg.,), I will get all the numerical entries of A. How do I calculate the matrix B?

Connectez-vous pour commenter.

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by