【问题标题】:How to visualize a sparse matrix in MATLAB?如何在 MATLAB 中可视化稀疏矩阵?
【发布时间】:2013-01-12 13:26:23
【问题描述】:

所以我有这个矩阵here,它的大小是 13 x 8198。(我称之为“废话”)。

这是一个稀疏矩阵,因为它的大部分条目都是 0。当我执行 imagesc(blah) 时,我得到以下图像:

显然这是毫无价值的,因为我无法清楚地看到非零元素。我尝试过使用颜色缩放,但无济于事。

无论如何,我想知道是否有更好的方法能够以某种方式在 MATLAB 中可视化这个矩阵?我正在设计一种算法,并希望能够看到某些东西 int teh 矩阵。

谢谢!

【问题讨论】:

    标签: matlab matrix plot sparse-matrix visualize


    【解决方案1】:

    试试spy;它正是为此而设计的。

    问题在于spy 使坐标轴相等,而您的数据为 13 x 8198,因此与第二个坐标轴相比,第一个坐标轴几乎不可见。 daspect 可以解决这个问题。

    >> spy(blah)
    >> daspect([400 1 1])
    


    spy 没有通过符号进行不同绘图的选项。一种选择是编辑源代码以添加该功能(它在 matlab 中实现,您可以通过运行edit spy 获取源代码)。不过,更简单的方法是分别监视正面和负面部分:

    >> daspect([400 1 1]);
    >> hold on;
    >> spy(max(blah, 0), 'b');
    >> spy(min(blah, 0), 'r');
    

    这有一个不幸的副作用,即使正负靠近的地方看起来被第二个绘制的地方所支配,这里是负数(例如,在矩阵的顶部行中)。除了摆弄标记大小之外,我不确定该怎么做。您当然可以按顺序进行并进行比较。

    【讨论】:

    • 间谍不起作用,我认为这与矩阵中存在负值有关,但我不确定。
    • @Learnaholic 它对我有用;问题是由于尺寸非常倾斜,它几乎看不见。正在研究如何让它看起来不错。
    • 我收回来了,是因为矩阵很大,(13*8198)...但是我还是什么都看不到..:-/.我会等你的更新。
    • 看起来棒极了,谢谢。最后一件事,有没有办法通过他们的符号突出数字?正蓝色,负红色,还是什么?
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2012-06-20
    • 2013-03-02
    • 1970-01-01
    • 2014-05-12
    相关资源
    最近更新 更多