一种可能性是超载display
函数,当您输入不以以下方式终止的表达式时,会自动调用该函数;
。例如,如果您将以下函数放在 MATLAB 路径上任意位置名为“@double”的文件夹中,则默认函数display
行为将被覆盖double
数组(这是基于Mohsen Nosratinia 的 display.m https://stackoverflow.com/a/18760446/2778484用于显示矩阵维度):
% @double/display.m
function display(v)
% DISPLAY Display a variable, limiting the number of elements shown.
name = inputname(1);
if isempty(name)
name = 'ans';
end
maxElementsShown = 500;
newlines = repmat('\n',1,~strcmp(get(0,'FormatSpacing'),'compact'));
if numel(v)>maxElementsShown,
warning('display:varTooLong','Data not displayed because of length.');
% OR show the first N=maxElementsShown elements
% builtin('disp', v(1:maxElementsShown));
elseif numel(v)>0,
fprintf([newlines '%s = \n' newlines], name);
builtin('disp', v);
end
end
例如,
>> xx=1:10
xx =
1 2 3 4 5 6 7 8 9 10
>> xx=1:1e4
Warning: Data not displayed because of length.
> In double.display at 17
EDIT:更新为尊重'compact'
and 'loose'
输出格式首选项。
EDIT 2: 防止disp
放置一个空数组。这使得whos
和其他命令避免不必要的display
.