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!