Effacer les filtres
Effacer les filtres

Symbolic Matrix members evaluation

4 vues (au cours des 30 derniers jours)
AMEHRI WALID
AMEHRI WALID le 16 Nov 2020
Commenté : Steven Lord le 16 Nov 2020
Hello everyone,
I am using the symbolic toolbox to create symbolic matrices, then I need to evaluate the value of each members of the matrix.
So, here is what I have done so far.
clear;
clc;
A = sym('A', [2, 3], 'real')
for i = 1:2
for j = 1:3
A(i, j) = i*j;
z = str2sym ( strcat('A', num2str(i), '_', num2str(j) ) )
end
end
Then, I obtain:
>> A
A =
[ 1, 2, 3]
[ 2, 4, 6]
However, when I want to get the member value, e.g: A1_3, I got the error "Unrecognized function or variable 'A1_3'."
That's why I created a string and conver to a symbolic value, and store in z. But I don't know how to get my Ai_j = A(i, j).
My goal is that each member Ai_j of the symbolic matrix gets the value of A(i, j). Can anyone help me with this ?
Thanks in advance.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 16 Nov 2020
Why do you want to create variable names like A1_3, A2_3, etc., when you can directly index the matrix A. Creating a separate variable name for each element is not an efficient coding approach: https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval.
Also, MATLAB does not provide a good way of doing what you want to do.
  5 commentaires
Ameer Hamza
Ameer Hamza le 16 Nov 2020
I am glad to be of help!
Steven Lord
Steven Lord le 16 Nov 2020
Actually, I want to avoid directly indexing the matrix A because its size changes every time in my application
That's no problem. Use size or numel to avoid having to hard-code the size of the matrix.
function showAllElements(A)
fprintf("Input argument A is of size [" + num2str(size(A)) + "]." + newline);
for whichElement = 1:numel(A)
fprintf("Element " + whichElement + " of A is %g.\n", A(whichElement));
end
Call this as:
showAllElements(magic(4))
showAllElements(rand(3, 5))

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by