我想在 MATLAB 中突出显示或标识矩阵中具有特定值的列。假设我有一个矩阵 A = [1 0 1 1 0 1; 1 1 0 0 0 1; 1 0 1 1 0 1; 0 1 1 0 0 1]
。
上述矩阵的结果是第 5 列,因为它包含所有零。我还想知道是否可以突出显示结果列以供识别。请帮我。我有一个非常大的矩阵来应用这个原则。
最佳答案
如何组合 find
和 all
以获得全零列 like this 的列索引?
A = [1 0 1 1 0 1; 1 1 0 0 0 1; 1 0 1 1 0 1; 0 1 1 0 0 1];
ind = find(all(A==0,1))
ind =
5
all
的第二个输入参数是指定它沿着第一个维度,即行。在这里它并不是真正必要的,但我发现这是一个很好的做法,因为你总是确定它是正确的尺寸。如果在某些情况下您可能获得 1xn 向量而不是 mxn,这一点尤其重要。
创建一个彩色矩阵:
这是一个 hack,我不一定推荐它,但如果你真的想在 MATLAB 中这样做,这是一个替代方案。此外,我认为您在执行此操作时可能会学到很多关于 MATLAB 的知识,因此花时间可能是值得的。
您可以使用 imagesc
创建一个包含所有值 1
的彩色图,但第 5 列中的值将是 0
(或相反,无所谓) .这将给出一个只有两种颜色的图,一种用于 1
的值,一种用于 0
的值。您可以使用 colormap
选择您想要的颜色。然后你 create a mesh 确定你想要显示的所有值的位置,使用 num2str
将矩阵转换为字符串,并将它们全部组合起来。您需要尝试一些以获得正确的位置,因为您可能希望行之间的填充比列之间的填充少。您可以使用 this answer 作为指南。最后, remove the axes 。如果您阅读并尝试理解所引用答案的每一行,适应起来应该相当简单。
简单的方法:
我有一个非常大的矩阵...”。这样的矩阵通常不是包含在报告中的好主意。但是,如果你真的想要,我实际上建议你从 variable explorer 复制并粘贴到 MS Excel 中(如果不止一次这样做,则使用 xlswrite
)。由于您知道要为哪一列着色,因此单击“颜色按钮”应该相当简单。
关于matlab - 如何突出显示或识别矩阵中具有特定值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733511/