matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)

matlab中有些计算结果比较长,直接查看有些困难,下面介绍pretty和symdisp函数优化输出结果,使结果更为直观。


演示示例1

有一个计算结果如下:

>> f1
 
f1 =
 
y^5 + (- w - y0)*y^4 + 1800*y^3 + (1498200*w - 1800*y0)*y^2 + (3600*w*y0 + 810000)*y - 1350810000*w - 810000*y0
 
1. 使用pretty函数美化输出
>> pretty(f1)
 5               4         3                          2
y  + (- w - y0) y  + 1800 y  + (1498200 w - 1800 y0) y  + (3600 w y0 + 810000) y - 1350810000 w - 810000 y0

该函数可使输出更接近数学格式。

2. 使用symdisp函数美化输出
symdisp(f1);

在这里插入图片描述


演示示例2

有一个计算结果如下:

>> F(3)
 
ans =
 
(y^2*((w - (2*w*y^2)/(y^2 + 900))/(y - y0) + 1))/60 - (25015*(w - (2*w*y^2)/(y^2 + 900)))/(y - y0) - (60*w*y)/(y^2 + 900) + 15
1. 使用pretty函数美化输出
>> pretty(F(3))
   /           2      \
   |      2 w y       |
   | w - --------     |   /           2  \
   |      2           |   |      2 w y   |
 2 |     y  + 900     |   | w - -------- | 25015
y  | ------------ + 1 |   |      2       |
   \    y - y0        /   \     y  + 900 /          60 w y
----------------------- - ---------------------- - -------- + 15
           60                     y - y0            2
                                                   y  + 900

该函数可使输出更接近数学格式。

2. 使用symdisp函数美化输出
symdisp(F(3));

在这里插入图片描述


演示示例3

有一个计算结果如下:

>> n
 
n =
 
[ -(2*x*(2*r^2 - 4*x^2 + 4*y*(w - y) - 1800))/(4*x^2 + 4*y^2 + 3600), -(2*y*(2*r^2 - 4*x^2 + 4*y*(w - y) - 1800))/(4*x^2 + 4*y^2 + 3600), (60*(2*r^2 - 4*x^2 + 4*y*(w - y) - 1800))/(4*x^2 + 4*y^2 + 3600)]
1. 使用pretty函数美化输出
>> pretty(n)
/         x #1 2                y #1 2               60 #1       \
| - ------------------, - ------------------, ------------------ |
|      2      2              2      2            2      2        |
\   4 x  + 4 y  + 3600    4 x  + 4 y  + 3600  4 x  + 4 y  + 3600 /

where

            2      2
   #1 == 2 r  - 4 x  + 4 y (w - y) - 1800

该函数可使输出更接近数学格式。

2. 使用symdisp函数美化输出
symdisp(n);

在这里插入图片描述


总结

经过以上实验,发现symdisp函数可将输出结果转化为更易读的格式,且效果较好

附录:symdisp函数源码

function h=symdisp(s)
%//SYMDISP Display a symbolic expression in human readable form.
%// symdisplay(S) displays the symbolic expression S in a small figure window,
%// using standard mathematical notation.
%// 
%// Examples:
%//   syms x t positive
%//   f=taylor(cos(x));
%//   symdisp(f)
%//   f=int(exp(-t)*t^(x-1),t,0,inf);
%//   symdisp(f)
%//
%// Required toolbox: Symbolic Math
%//
%// See also SYMBOLIC PRETTY.
if ~isa(s,'sym')
    s=sym(s);
    %error('输入参数必须是sym类型,请使用 sym() 将你的结果转化为sym类型.')
end
S=['$',latex(s),'$'];
S=strrep(S,'&','& \quad');
S=strrep(S,'{\it','\mathrm{');
h=msgbox(S,'字符的数学展示形式');
h1=get(h,'children');
h2=h1(1);
h3=get(h2,'children');
if isempty(h3)
    h2=h1(2); h3=get(h2,'children');
end
set(h3,'visible','off')
set(h3,'interpreter','latex')
set(h3,'string',S)
set(h3,'fontsize',20)
w=get(h3,'extent');
W=get(h,'position');
W(3)=max(w(3)+10,125);
W(4)=w(4)+40;
set(h,'position',W)
h4=h1(2);
if ~strcmp(get(h4,'tag'),'OKButton'), h4=h1(1); end
o=get(h4,'position');
o(1)=(W(3)-o(3))/2;
set(h4,'position',o)
set(h3,'visible','on')
set(h,'color','w');

此函数源文件可前往下面网址下载:

symdisp.m下载通道

  • 48
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论
### 回答1: 你可以使用 `rats` 函数MATLAB 中的输出转换为分式形式。例如,如果要将 `sqrt(2) + 1` 转换为分式形式: ``` >> syms x >> f = sqrt(2) + 1; >> rats(f) ans = 3^(1/2)/2 + 1/2 ``` 这将输出 `3^(1/2)/2 + 1/2`,它是 `sqrt(2) + 1` 的分式形式。 ### 回答2: 将Matlab的输出函数转化为分式形式,首先我们需要了解Matlab的输出一般是以浮点数或小数的形式呈现。要将其转化为分式,需要考虑以下几个步骤: 1. 提取小数部分:假设Matlab的输出为x,可以使用floor(x)函数来提取小数点前的整数部分,通过x - floor(x)获得小数部分。 2. 分数的分子部分:将小数部分乘以约定的整数倍数,使得小数部分成为整数。例如,如果小数部分为0.25,将其乘以4,得到1。 3. 分数的分母部分:分母部分应为小数部分乘以约定的整数倍数。例如,如果小数部分为0.25,将其乘以4,则分母为4。 4. 最后,将提取的整数部分、分子部分和分母部分组合成一个分式。 需要注意的是,以上方法适用于大多数情况,但并不是所有的小数都可以转化为完全精确的分数形式。对于某些无理数或者无限不循环小数,只能给出近似值而非精确的分数形式。在实际操作时,可以使用rat()函数来进行小数到分数的转化。 综上所述,将Matlab的输出函数转化为分式形式,需要对小数部分进行提取、分子和分母的计算,并将它们组合成一个分式。 ### 回答3: 要将MATLAB的输出函数转化为分式的形式,可以按照以下步骤进行: 首先,假设我们有一个MATLAB输出的函数,例如:"x^2 + 2x + 1"。 其次,我们可以使用MATLAB中的符号计算工具箱(Symbolic Math Toolbox)来处理这个函数。需要确保已经安装了该工具箱并加载了相应的函数。 然后,我们可以使用符号变量来表示函数中的变量。在这个例子中,我们用符号变量x表示函数中的变量。 接下来,使用符号计算工具箱中的表达式函数(expr)来创建函数的表达式。在这个例子中,我们可以这样表示函数:expr = x^2 + 2*x + 1。 然后,使用符号计算工具箱中的pretty函数来美化表达式,以便得到容易读懂的输出。我们可以这样显示函数:pretty(expr)。 最后,MATLAB将输出美化后的分式形式的函数,如:"x^2 + 2x + 1"将显示为"(x + 1)^2"这种形式,也就是展开函数并将其写成分式的形式。 需要注意的是,不是所有的函数都可以完全转化为分式形式。有时候,输出可能仍然是一个多项式或其他形式的表达式。这取决于MATLAB的计算能力和所输入的函数的复杂性。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43964993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值