Selecting non-zero elements from a symbolic vector
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Farid Salazar Wong
am 23 Jun. 2015
Kommentiert: Star Strider
am 23 Jun. 2015
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 Kommentar
Walter Roberson
am 23 Jun. 2015
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?
Akzeptierte Antwort
Star Strider
am 23 Jun. 2015
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 Kommentare
Weitere Antworten (2)
Mischa Kim
am 23 Jun. 2015
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 Kommentare
Mischa Kim
am 23 Jun. 2015
Then you need to post the entire code. Use the paper clip symbol to attach.
Azzi Abdelmalek
am 23 Jun. 2015
Bearbeitet: Azzi Abdelmalek
am 23 Jun. 2015
syms a b c
d = [a*b, 0 , a^2*b*c, 1, 0]
c=nonzeros(d).'
2 Kommentare
Siehe auch
Kategorien
Mehr zu Conversion Between Symbolic and Numeric finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!