Logical Indexing Within a Symbolic Array

2 vues (au cours des 30 derniers jours)
Kamal Premaratne
Kamal Premaratne le 30 Déc 2020
Commenté : Ameer Hamza le 30 Déc 2020
Suppose I have a symbolic array like
A = [0 0 0 w7 0 0;
0 0 0 0 w9 0;
0 w3 0 0 0 0;
0 0 w5 0 0 0;
w1 0 w6 w8 0 0;
w2 w4 0 0 w10 0];
where w1, ..., w10 are symbolic real variables. I would like to generate a "binary" array which identifies where the symbolic variables w1, ..., w10 are located, meaning that the output should be
A_bin = [0 0 0 1 0 0;
0 0 0 0 1 0;
0 1 0 0 0 0;
0 0 1 0 0 0;
1 0 1 1 0 0;
1 1 0 0 1 0];
Is there a way MATLAB could generate A_bin from A?
Thank you.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 30 Déc 2020
Try this
syms w1 w2 w3 w4 w5 w6 w7 w8 w9 w10
A = [0 0 0 w7 0 0;
0 0 0 0 w9 0;
0 w3 0 0 0 0;
0 0 w5 0 0 0;
w1 0 w6 w8 0 0;
w2 w4 0 0 w10 0];
A_bin = ~isAlways(A==0)
or
A_bin = ~isnan(A./A)
  2 commentaires
Kamal Premaratne
Kamal Premaratne le 30 Déc 2020
Fantastic. Thank you so much.
Ameer Hamza
Ameer Hamza le 30 Déc 2020
I am glad to be of help!

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 30 Déc 2020
~isSymType(A, 'constant')
  1 commentaire
Kamal Premaratne
Kamal Premaratne le 30 Déc 2020
This also works. Thank you very much.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by