Selecting non-zero elements from a symbolic vector
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Farid Salazar Wong
el 23 de Jun. de 2015
Comentada: Star Strider
el 23 de Jun. de 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 comentario
Walter Roberson
el 23 de Jun. de 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?
Respuesta aceptada
Star Strider
el 23 de Jun. de 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 comentarios
Más respuestas (2)
Mischa Kim
el 23 de Jun. de 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 comentarios
Mischa Kim
el 23 de Jun. de 2015
Then you need to post the entire code. Use the paper clip symbol to attach.
Azzi Abdelmalek
el 23 de Jun. de 2015
Editada: Azzi Abdelmalek
el 23 de Jun. de 2015
syms a b c
d = [a*b, 0 , a^2*b*c, 1, 0]
c=nonzeros(d).'
2 comentarios
Star Strider
el 23 de Jun. de 2015
The nonzeros function for symbolic arrays was introduced in R2014b.
Ver también
Categorías
Más información sobre Conversion Between Symbolic and Numeric en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!