How to show symbolic object in uitable?

How can I show symbolic object in uitable?
syms i2,i3 'real';
a=[ 0 0 -i3; 1 2 3];
a(2,2)=-i2;
set(handles.uitable2, 'Data',a);

 Réponse acceptée

Walter Roberson
Walter Roberson le 2 Nov 2011

1 vote

You cannot show symbolic objects in a uitable. In uitable, you can only show numbers and text. You can find the text representation of a symbolic object by using char() on the object. But remember, that will return text, not a symbolic object, so you will not be able to use the text as a symbolic object.

6 commentaires

john
john le 2 Nov 2011
Thank You,
So:
1. How can I convert symbolic object ( or in my case system of equations) to char type, for uitable? Or how can I find text representation of a symbolic object?
I used command a(i,j)=findsym(UserData.maticaA{i,j});
but I got this mistake: Undefined function or method 'findsym' for input arguments of type 'char'.
Here is result of real task created with M-file:
s =
(Vo + Io*R3*alfa)/(R1 + R2)
(Vo + Io*R3*alfa)/(R1 + R2)
-(Vo + Io*R3*alfa)/(R1 + R2)
-Io
-Io
Io - (Vo + Io*R3*alfa)/(R1 + R2)
(R1*(Vo + Io*R3*alfa))/(R1 + R2)
-Io*R3*alfa
-(R2*(Vo + Io*R3*alfa))/(R1 + R2)
-Io*R3
Vo + Io*R3
Vo
(R1*(Vo + Io*R3*alfa))/(R1 + R2)
(R1*Vo - Io*R2*R3*alfa)/(R1 + R2)
Vo
Vo + Io*R3
So I have to show this in GUI.
2. Exist other way, how can I show result without uitable?
Walter Roberson
Walter Roberson le 2 Nov 2011
You can find the text representation of a symbolic object by using char() on the object.
Example:
syms x y
f = x^2 + 3*x*y + 2;
char(f)
To convert text to a symbolic object, use sym()
For example
f = sym('x^2 + 3*x*y + 2');
Once you have it in symbolic form, you can extract the names of the variables that occur in the expression using symvar(). For example
symvar(f)
would return the symbolic names x and y . Depending on context, you may want to char() the result.
Warning: "symvar does not consider the constants pi, i, and j to be variables."
Walter Roberson
Walter Roberson le 2 Nov 2011
Can you show the result without a uitable? Sure. You could text() it in to place, or you could create a uicontrol('Style','text'), or a uicontrol('Style','edit')
john
john le 2 Nov 2011
for this case
syms i2,i3 'real';
a=[ 0 0 -i3; 1 2 3];
a(2,2)=-i2;
how can I show matrix a in uicontrol('Style','text')
Walter Roberson
Walter Roberson le 2 Nov 2011
uicontrol('Style','text', 'String', cellstr(char(a)) )
(You will want to add a Position parameter in to that of course.)
If you use instead use 'Style', 'edit', be sure to set 'Max' to at least 2. Another hint is if you want non-editable text but you want it to be vertically scrollable, then instead of using 'Style', 'text', use 'Style', 'edit', 'Max', 2, 'Enable', 'disable'
john
john le 3 Nov 2011
Big Thank You Mr. Walter Roberson,
cellstr(char(a)) is the best command ever :-).
Thank You so much again
Now my program works great, I put in uitable "symbolic object", and than I show "symbolic object" in other uitable

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by