Selecting non-zero elements from a symbolic vector

4 ビュー (過去 30 日間)
Farid Salazar Wong
Farid Salazar Wong 2015 年 6 月 23 日
コメント済み: Star Strider 2015 年 6 月 23 日
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
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?

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2015 年 6 月 23 日
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 件のコメント
Farid Salazar Wong
Farid Salazar Wong 2015 年 6 月 23 日
Appreciated, that is all I needed! You are a boss.
Star Strider
Star Strider 2015 年 6 月 23 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (2 件)

Mischa Kim
Mischa Kim 2015 年 6 月 23 日

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
Farid Salazar Wong 2015 年 6 月 23 日
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 2015 年 6 月 23 日
Then you need to post the entire code. Use the paper clip symbol to attach.

サインインしてコメントする。


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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConversion Between Symbolic and Numeric についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by