回到Matlab R2016b中的旧显示格式

Lui*_*ndo 5 ide configuration matlab 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 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
    
    Run Code Online (Sandbox Code Playgroud)

如你所见,R2016b中有一条额外的线告诉类型.显然,这种情况发生在任何非double或类型的情况下char.

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

Sue*_*ver 3

不幸的是,似乎没有人愿意改变这种行为。有(一如既往)一些棘手的解决方法。

当您在一行中省略分号时,它不是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
Run Code Online (Sandbox Code Playgroud)

现在,每当由于缺少尾随分号而显示元胞数组时,它都不会包含任何类型信息。

>> c = {'a', 'b'}

c =

    'a'    'b'
Run Code Online (Sandbox Code Playgroud)

不幸的是,还有其他数据类型(例如logical)也显示类型信息,因此您必须重载display每个类的方法。