Selecting non-zero elements from a symbolic vector

4 Ansichten (letzte 30 Tage)
Farid Salazar Wong
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
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?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
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
Farid Salazar Wong
Farid Salazar Wong am 23 Jun. 2015
Appreciated, that is all I needed! You are a boss.
Star Strider
Star Strider am 23 Jun. 2015
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Mischa Kim
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
Farid Salazar Wong
Farid Salazar Wong am 23 Jun. 2015
I get the following message (which I am not sure what it means): Error using symfun>validateArgNames (line 205) Second input must be a scalar or vector of unique symbolic variables.
Error in symfun (line 45) y.vars = validateArgNames(inputs);
Error in sym/subsasgn (line 762) C = symfun(B,[inds{:}]);
Mischa Kim
Mischa Kim am 23 Jun. 2015
Then you need to post the entire code. Use the paper clip symbol to attach.

Melden Sie sich an, um zu kommentieren.


Azzi Abdelmalek
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
Farid Salazar Wong
Farid Salazar Wong am 23 Jun. 2015
nonzeros do not work for type sym.
Star Strider
Star Strider am 23 Jun. 2015
The nonzeros function for symbolic arrays was introduced in R2014b.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by