Selecting non-zero elements from a symbolic vector
显示 更早的评论
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?
采纳的回答
更多回答(2 个)
Mischa Kim
2015-6-23
0 个投票
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 个评论
Farid Salazar Wong
2015-6-23
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 个评论
Farid Salazar Wong
2015-6-23
Star Strider
2015-6-23
The nonzeros function for symbolic arrays was introduced in R2014b.
类别
在 帮助中心 和 File Exchange 中查找有关 Linear Algebra 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!