回到Matlab R2016b中的旧显示格式

时间:2016-10-03 09:19:47

标签: matlab configuration ide compatibility

在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中有一条额外的线告诉类型。显然,对于任何不是doublechar的类型都会发生这种情况。

R2016b中是否有一些设置可以回到原来的行为?

1 个答案:

答案 0 :(得分:3)

不幸的是,似乎没有改变这种行为的偏好。 (一如既往)有一些hacky解决方法。

当您从一行中省略分号时,它不是disp,而是display。 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方法。