Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab变量编辑器中缩小所有列_Matlab - Fatal编程技术网

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

在Matlab变量编辑器中缩小所有列,matlab,Matlab,我经常使用openvar(“myArrayName”)来浏览我的数据。然而,我被Excel一次缩小所有列的能力宠坏了,它允许我查看大量数据。使用有限的桌面空间是非常令人窒息的,我必须同时查看这么少的专栏。手动调整每一列并不是一个好的解决方案,因为我经常打开变量,而且它们通常有很多列。有没有办法以批量方式缩小列的范围?这不是一个完美的解决方案,但可以让您开始。基本思路是先调整所有列的大小,然后再调整所有列的大小,如建议的大小。您可以下载java类,将其打包到jar中,然后使用javaclasspa

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

这不是一个完美的解决方案,但可以让您开始。基本思路是先调整所有列的大小,然后再调整所有列的大小,如建议的大小。您可以下载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使用的自定义表类,您会注意到一个方便的
setAutoGrowthTemporaryDisabled
方法。将其设置为
true
允许我们暂时避免这些副作用(
pause
似乎是它生效所必需的),但是一旦您开始与表/数据交互,列的大小仍然可能会调整。您需要进一步探索这个自定义表类,以了解如何防止这种情况。

谢谢,nirvana msu。我猜想没有什么神奇的方法可以绕过一个在GUI的保护下潜入的编程解决方案。我不会很快这样做(我的现实时间情况),但知道这是事实上的情况是有用的。我会等待一个神奇的现成解决方案,如果没有出现,我会把你的答案标记为答案。好问题。听起来像是他们应该实施的东西。