How do I change the format of symbolic output

2 ビュー (過去 30 日間)
Peter van der Kamp
Peter van der Kamp 2024 年 5 月 28 日
コメント済み: Peter van der Kamp 2024 年 5 月 30 日
When I type:
>> syms x y
>> solve(y-x^2,x)
I get:
ans =
[ 1/2 ]
[y ]
[ ]
[ 1/2]
[-y ]
How do I change the output format so to get MATLAB code (with * and ^), which by the way is what I used to get (before today)?
  2 件のコメント
VBBV
VBBV 2024 年 5 月 28 日
@Peter van der Kamp use texlabel function
syms x y
sol = solve(y-x^2,x);
sol
sol = 
solStr = texlabel(sol)
solStr = '[-{y}^{{1}/{2}}; {y}^{{1}/{2}}]'
Peter van der Kamp
Peter van der Kamp 2024 年 5 月 28 日
Thanks, it's nice to know that I can turn things into tex. But it's not what I want. I'd like to define the solutions as branches of a multivalued function which I can feed back into MATLAB. Of course, this is just a simple example which I created for the issue I'm having. I used to get my answer in the following format: e.g. sqrt(5/2 + sqrt(w^2 + 9/4)) which is what I'm after. I'm using version R2022b.

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

採用された回答

Dyuman Joshi
Dyuman Joshi 2024 年 5 月 28 日
Change the symbolic preference of Type-setting as follows -
syms x y
sol = solve(y-x^2,x)
sol = 
%Preference changed (Default value is true)
sympref('TypesetOutput',false);
%Check the output now
sol
sol = -y^(1/2) y^(1/2)
  8 件のコメント
Dyuman Joshi
Dyuman Joshi 2024 年 5 月 29 日
Based on your comments, things seem to be mixed up.
Yes, reinstalling MATLAB should clear the issue.
Let us know what happens after reinstalling.
Peter van der Kamp
Peter van der Kamp 2024 年 5 月 30 日
Hi Dyuman, good news here:
>> syms x y
>> solve(x-y^2,y)
ans =
-x^(1/2)
x^(1/2)
After reinstalling MATLAB and restarting my computer, things are working well again. IT suggested that maybe a restart of the computer could have fixed the problem (I tend to not do that often enough, sorry).
Cheers,
Peter

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

その他の回答 (1 件)

Ninad
Ninad 2024 年 5 月 28 日
Hi Peter,
If you're using MATLAB version R2016b or newer, you can use "string(sol)" to convert the solution to a string format.
For versions older than R2016b, please use "char(sol)" to achieve the same outcome.
Below is a code snippet for your reference:
>> syms x y
>> sol = solve(y-x^2,x);
>> solStr = string(sol);
>> solChar = string(sol);
>> disp(solStr)
"-y^(1/2)"
"y^(1/2)"
>> disp(solChar)
"-y^(1/2)"
"y^(1/2)"
I hope you find this information helpful.
Regards,
Ninad
  1 件のコメント
Peter van der Kamp
Peter van der Kamp 2024 年 5 月 28 日
I'm on R2022b, when I type string(sol) I get:
Error using string
Conversion to string from sym is not possible.

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by