Logical Indexing Within a Symbolic Array

2 ビュー (過去 30 日間)
Kamal Premaratne
Kamal Premaratne 2020 年 12 月 30 日
コメント済み: Ameer Hamza 2020 年 12 月 30 日
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.

採用された回答

Ameer Hamza
Ameer Hamza 2020 年 12 月 30 日
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 件のコメント
Ameer Hamza
Ameer Hamza 2020 年 12 月 30 日
I am glad to be of help!

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2020 年 12 月 30 日
~isSymType(A, 'constant')
  1 件のコメント
Kamal Premaratne
Kamal Premaratne 2020 年 12 月 30 日
This also works. Thank you very much.

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by