在 Matlab R2016b 中,显示某些数据类型的变量会显示有关该类型的信息。当通过键入不带最后分号的方式显示变量时会发生这种情况(使用disp
功能)。
比较例如:
-
Matlab R2015b(旧格式:仅显示数据):
>> x = [10 20 30]
x =
10 20 30
>> x = {10 20 30}
x =
[10] [20] [30]
>> x = [false false true]
x =
0 0 1
-
Matlab R2016b(新格式:包括类型):
>> x = [10 20 30]
x =
10 20 30
>> x = {10 20 30}
x =
1×3 cell array
[10] [20] [30]
>> x = [false false true]
x =
1×3 logical array
0 0 1
正如您所看到的,R2016b 中有一行额外的行来说明类型。显然,这种情况发生在任何类型不是double
or char
.
R2016b 中是否有一些设置可以恢复到旧的行为?
不幸的是,似乎没有人愿意改变这种行为。有(一如既往)一些棘手的解决方法。
当您在一行中省略分号时,它不是disp
这就是所谓的而是display http://www.mathworks.com/help/matlab/ref/display.html。 R2016b 显然修改了display
的方法cell
数据类型显示一些类型信息以及值本身。
值得庆幸的是我们可以超载display
方法看起来有点像display
以前版本的。
我们可以创建一个@cell
文件夹(我们路径上的任何位置)并放置一个名为display.m
里面。
@cell/display.m
function display(obj)
% Overloaded display function for grumpy old men
if strcmpi(get(0, 'FormatSpacing'), 'loose')
fprintf('\n%s =\n\n', inputname(1))
else
fprintf('%s =\n', inputname(1))
end
disp(obj);
end
现在,每当由于缺少尾随分号而显示元胞数组时,它都不会包含任何类型信息。
>> c = {'a', 'b'}
c =
'a' 'b'
不幸的是,还有其他数据类型(例如logical
)还显示类型信息,因此您必须重载display
每个类的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)