在 Matlab 变量编辑器中缩小所有列

问题描述 投票:0回答:2

我经常使用 openvar('myArrayName') 来浏览我的数据。然而,我被 Excel 一次性缩小所有列的能力宠坏了,这样我就可以看到大量数据。使用有限的桌面空间是非常令人窒息的,我必须一次查看这么少的列。手动调整每一列并不是一个好的解决方案,因为我不断地打开变量,而且它们通常有很多列。有没有办法批量缩小列数?

matlab
2个回答
1
投票

这不是一个完美的解决方案,但可以帮助您入门。基本思想是首先获取底层java表的句柄,然后调整所有列的大小,例如按照这里的建议。您可以下载 TableColumnAdjuster java 类,将其打包到 jar 中并使用

javaclasspath
加载。使用
findjobj
搜索 Java 句柄时,请注意表类将取决于您尝试显示的变量的类型(一些示例此处),因此我们需要找到正确的句柄。

javaaddpath('path\to\TableColumnAdjuster.jar');
my_var= randn(1e4,10);
openvar('my_var');
resizevar('my_var');

function resizevar(name)
    desktop = com.mathworks.mde.desk.MLDesktop.getInstance();
    varclient = desktop.getClient(name);
    jh = findjobj(varclient);
    hNames = get(jh, 'Name');
    validNames = {'VariableTable','CellTable','DatasetVariableTable','TableObjectVariableTable','CategoricalVariableTable','TimeSeriesArrayEditorTablePanel:fDataTable'};
    jTable = jh(find(ismember(hNames, validNames),1));

    jTable.setAutoGrowthTemporarilyDisabled(true);
    jTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
    pause(0.1);

    spacing = 10;
    tca = TableColumnAdjuster(jTable, spacing);
    tca.adjustColumns();
end

问题是,当您滚动和/或基础数据更改时,Matlab 将不断更新表格,这可能会重置宽度(甚至会产生其他副作用,例如添加更多空列等)。如果您探索 Matlab 使用的自定义表类,您会注意到一个方便的

setAutoGrowthTemporarilyDisabled
方法。将其设置为
true
可以让我们暂时避免这些副作用(似乎需要
pause
才能生效),但是一旦开始与表/数据交互,列的大小仍然可能会调整。您需要进一步探索这个自定义表类以了解如何防止这种情况。


0
投票

可以通过在表中的列名称中添加空格来加宽列:

Tbl=表([Var1,Var2,Var3]); Tbl.Properties.VariableNames={'---VarName1---','--VarName2--','-VarName3-'};

  • '-' = 空格
© www.soinside.com 2019 - 2024. All rights reserved.