如何在MATLAB中可视化稀疏矩阵?

3
我有一个大小为13 x 8198的稀疏矩阵,称之为‘blah’,你可以在这里找到它。但是,该矩阵大部分元素都为0。当我使用imagesc(blah)命令时,得到了以下图像:enter image description here。很明显,无法清晰地看到非零元素。我已经尝试调整颜色比例,但没有效果。不过,我想知道是否有更好的方法在MATLAB中可视化这个矩阵?我正在设计一个算法,并希望能够查看矩阵中的某些内容。谢谢!
1个回答

7
尝试使用spy,它专门用于此目的。问题在于spy使轴相等,而您的数据为13 x 8198,因此第一个轴与第二个轴相比几乎不可见。daspect可以解决这个问题。
>> spy(blah)
>> daspect([400 1 1])


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

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

这会产生一个不幸的副作用,使得正负数值接近的地方看起来被第二个绘制的占据,例如在您矩阵的顶行中负值占据了主导地位。我不确定除了调整标记大小之外还能做什么,您当然可以按两种顺序进行比较。


间谍程序不起作用,我认为这与矩阵中存在负值有关,但我不确定。 - Spacey
@Learnaholic 对我来说它有效;问题是由于非常扭曲的尺寸,它几乎无法查看。现在正在尝试调整使其看起来可以接受。 - Danica
我收回之前的说法,原因是矩阵太大了(13*8198)...但我仍然看不到任何东西.. :-/。我会等待您的更新。 - Spacey
看起来很不错,谢谢你。 最后一个问题,有办法通过符号突出数字吗? 正数为蓝色,负数为红色或其他颜色? - Spacey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接