MATLAB显⽰输出数据的三种⽅式
1.改变数据格式
当数据重复再命令⾏窗⼝时,整数以整形形式显⽰,其他值将以默认格式显⽰。MATLAB的默认格式是精确到⼩数点后4位。如果⼀个数太⼤或太⼩,那么将会以科学记数法的形式显⽰。⽐如:
>> x=100.11
x =
100.1100
>> y=1001.1
y =
1.0011e+03
>> z=0.00010011
z =
1.0011e-04
改变默认输出格式要⽤到format命令,可根据下表改变数据的输出格式
format 命令结果例⼦
format short保留⼩数点后4位(默认格式)12.3456
format long保留⼩数点后14位12.345678901234500
format short e带有5位有效数字科学记数法 1.2346e+100
format short g总共有5个数字,可以⽤科学记数法,也可不⽤12.346
format long e带有15位有效数字科学记数法 1.234567*********e+001
format long g总共有15个数字,可以⽤科学记数法,也可不⽤12.3456789012346
format bank美元格式12.35
format hex⽤16进制标识4028b0fcd32f6f3b
format rat两个⼩整数的⽐2233/100 format compact隐藏多于的换⾏符
format loose使⽤多余的换⾏符
format +只显⽰这个数的正负+
其中美元格式是指按美元精确到美分的格式记数,隐藏/使⽤多余的换⾏符这个我也试出来有什么卵⽤。
2.disp函数
另⼀种显⽰数据的⽅法是⽤disp函数。disp需要⼀个数组参数,它将值显⽰在命令⾏窗⼝。如果这个数组是字符型,那么包含在这个数组中的字符串将会打印在命令⾏窗⼝。
此函数可联合num2str(将⼀个数转化为字符串)和int2str(讲⼀个整数转化为字符串)来产⽣新的信息,显⽰在命令⾏窗⼝中。例如,下⾯的语句将“the value of pi=3.1416”显⽰在命令⾏窗⼝中。第⼀句创建了⼀个字符型数组,第⼆句⽤于显⽰这个数组。
>> str=['the value of pi=' num2str(pi)];
>> disp(str);
the value of pi=3.1416
3.⽤fprintf函数格式化输出数据
⽤fprintf函数显⽰数据是⼀种⼗分简便⽅法。fprintf函数显⽰带有相关⽂本的⼀个或多个值,允许程序员控制显⽰数据的⽅式。它在命令⾏窗⼝打印⼀个数据的⼀般格式如下:
fprintf(format,data)
其中format⽤于表⽰⼀个描述打印数据⽅式的字符串,data代表要打印的⼀个或多个标量或数组。format包括两⽅⾯的内容,⼀⽅⾯是打印⽂本内容;另⼀⽅⾯是打印内容中的数据格式。例如
>> fprintf('the value of pi is%6.2f\n',pi)
the value of pi is3.14
打印的结果为the value of pi is 3.14,后⾯带有⼀个换⾏符。转义序列%6.2f代表在本函数中的第⼀个数据项将占有6个字符宽度,⼩数点后有2位⼩数。
fprintf函数⼜⼀个重⼤的局限性,只能显⽰复数的实部。当我们的计算结果是复数时,这个局限性将会产⽣错误。在这种情况下,最好⽤disp显⽰数据。
format 命令结果
%d把值作为整数来处理
%e⽤科学记数法来显⽰数据
%f⽤于格式化浮点数,并显⽰这个数
%g⽤科学记数格式,或浮点数格式,根据长度最短的显⽰
%n换⾏符
例如
>> i
ans =
0.0000 + 1.0000i
>> disp([i])
0.0000 + 1.0000i
>> fprintf('i is%8.4f\n',i)
i is 0.0000
注意fprintf忽略了虚部fprintf格式
4.对⽐总结
改变数据的默认格式可以让数据以你想要的形式展现,包括精确到哪⼀位、多少进制显⽰、只显⽰正负等;
使⽤disp函数来打印可以打印所有的内容,包括负数,但要注意的是disp函数需要的是数组参数,并且只会打印数组内的字符串,所以如果是⼀个数字你需要使⽤int2str或num2str转化成字符串,但是如果是⼀个矩阵,你可以直接打印(⾄于为什么可以直接打印数字格式的矩阵,我也不明⽩);
使⽤fprintf函数可以以任何的数据格式打印数据,⽽且可以带有⼀个或多个值,但是要使⽤正确的特殊字符,但值得注意的是fprintf 函数只能复数的实部,所以在有复数参加或产⽣的计算中,可能产⽣错误的结果;
总的来说,使⽤fprintf最为灵活⽅便,可以输出任何格式,⽽且可以有多个数据项,但fprintf需要定义数据项的字符宽度和数据格式,所以上⼿感觉有点繁琐。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论