Selecting non-zero elements from a symbolic vector
4 ビュー (過去 30 日間)
古いコメントを表示
Given a symbolic vector, say [a*b, 0 , a^2*b*c, 1, 0]. How could I obtain a vector from the non-zero entries, I would like for the given example to have [a*b, a^2*b*c, 1] as a result. I tried nonzeros but this does not work for type sym.
1 件のコメント
Walter Roberson
2015 年 6 月 23 日
Do you want to remove the entries that are identical to 0, or the entries that can be proven to be 0? For example if one of the entries was 1 - cos(theta)^2 - sin(theta)^2 then we could show that this must be 0 (at least for finite non-nan values), so should it be removed?
採用された回答
Star Strider
2015 年 6 月 23 日
This works for me (in R2015a):
syms a b c
V = [a*b, 0 , a^2*b*c, 1, 0];
Vnz = V(V~=0)
Vnz =
[ a*b, a^2*b*c, 1]
2 件のコメント
その他の回答 (2 件)
Mischa Kim
2015 年 6 月 23 日
Farid, you could use
syms a b c d = [a*b, 0 , a^2*b*c, 1, 0]; d(d==0) = [] d = [ a*b, a^2*b*c, 1]
2 件のコメント
Mischa Kim
2015 年 6 月 23 日
Then you need to post the entire code. Use the paper clip symbol to attach.
Azzi Abdelmalek
2015 年 6 月 23 日
編集済み: Azzi Abdelmalek
2015 年 6 月 23 日
syms a b c
d = [a*b, 0 , a^2*b*c, 1, 0]
c=nonzeros(d).'
2 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!