matlab - 在 Matlab 变量编辑器中使所有列变窄

标签 matlab

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

最佳答案

这不是一个完美的解决方案,但可以帮助您入门。基本思路是先get a handle to underlying java table ,然后调整所有列的大小,例如按照建议here 。您可以下载TableColumnAdjuster java 类,将其打包成 jar 并使用 javaclasspath 加载。当使用 findjobj 搜索 java 句柄时,请注意表类将取决于您尝试显示的变量的类型(一些示例 here ),因此我们需要找到正确的句柄。

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 才能生效),但是一旦开始交互,列的大小仍可能会调整与表/数据。您需要进一步探索这个自定义表类以了解如何防止这种情况。

关于matlab - 在 Matlab 变量编辑器中使所有列变窄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162924/

相关文章:

matlab - Matlab错误功能结构错误标识符

matlab - 使用 FFT、PSD 和 STFT 进行音频特征提取并查找最强大的频率

matlab - MATLAB 中的逐元素矩阵复制

matlab - 计算数组中的重复整数

matlab - 使用预定规则索引矩阵

matlab - 在图像上写数字

神经网络的 Matlab 实现大大优于 Keras 变体

performance - 如何降低 O(N^2) C-index 函数的时间复杂度?

matlab - 为什么 100*0.07 等于 6.9999....?

matlab - 如何提供用户名/密码以使用 Matlab urlread/urlwrite 访问 Web 资源?