在Matlab变量编辑器中缩小所有列
我经常使用openvar(“myArrayName”)来浏览我的数据。然而,我被Excel一次缩小所有列的能力宠坏了,它允许我查看大量数据。使用有限的桌面空间是非常令人窒息的,我必须同时查看这么少的专栏。手动调整每一列并不是一个好的解决方案,因为我经常打开变量,而且它们通常有很多列。有没有办法以批量方式缩小列的范围?这不是一个完美的解决方案,但可以让您开始。基本思路是先调整所有列的大小,然后再调整所有列的大小,如建议的大小。您可以下载java类,将其打包到jar中,然后使用在Matlab变量编辑器中缩小所有列,matlab,Matlab,我经常使用openvar(“myArrayName”)来浏览我的数据。然而,我被Excel一次缩小所有列的能力宠坏了,它允许我查看大量数据。使用有限的桌面空间是非常令人窒息的,我必须同时查看这么少的专栏。手动调整每一列并不是一个好的解决方案,因为我经常打开变量,而且它们通常有很多列。有没有办法以批量方式缩小列的范围?这不是一个完美的解决方案,但可以让您开始。基本思路是先调整所有列的大小,然后再调整所有列的大小,如建议的大小。您可以下载java类,将其打包到jar中,然后使用javaclasspa
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使用的自定义表类,您会注意到一个方便的
setAutoGrowthTemporaryDisabled
方法。将其设置为true
允许我们暂时避免这些副作用(pause
似乎是它生效所必需的),但是一旦您开始与表/数据交互,列的大小仍然可能会调整。您需要进一步探索这个自定义表类,以了解如何防止这种情况。谢谢,nirvana msu。我猜想没有什么神奇的方法可以绕过一个在GUI的保护下潜入的编程解决方案。我不会很快这样做(我的现实时间情况),但知道这是事实上的情况是有用的。我会等待一个神奇的现成解决方案,如果没有出现,我会把你的答案标记为答案。好问题。听起来像是他们应该实施的东西。