您的位置:首页 > 编程语言 > MATLAB

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

2020-08-15 20:02 8001 查看

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下载通道

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: