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 个)
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 个评论
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!