繁体   English   中英

稀疏矩阵图Matlab

[英]Sparse matrix plot matlab

我有一个具有4个不同值的5000 * 5000稀疏矩阵。 我想用4种不同的颜色可视化非零元素,以便可以识别此值的比率以及它们之间的关系,我使用了imagec,但是我无法很好地识别不同值之间的比率,尤其是比率较小的值。如果我为每个值使用一些符号,它可以工作,但我不知道在Matlab中如何使用。 有什么建议吗? Dan代码的结果如下图所示。

结果约5000 * 50005000 * 5000矩阵的1000 * 1000块的结果

您可以将矩阵重新设置为一组[X,Y,F]坐标(重新使用我从“ 重采样矩阵”中得到的答案并在一个矩阵中还原 ):

假设你的矩阵是M

[X, Y] = meshgrid(1:size(M,1), 1:size(M,2));
Mf = M(:); %used again later, hence stored
V = [X(:), Y(:), Mf];

摆脱零元素

V(Mf == 0, :) = [];

此时,如果您有权访问统计信息工具箱,则可以转到gscatter(V(:,1), V(:,2), V(:,3))以获得正确的图,否则,请继续执行以下操作您没有工具箱:

查找M中唯一值的列表

Vu = unique(V(:,3));

对于每个这样的值,将点绘制为xy散点图,注意保持所有位置可确保每次添加新图时颜色都会改变,即循环的每次新迭代

hold all;
for g = 1:length(Vu)
    Vg = V(V(:,3)==Vu(g),:)
    plot(Vg(:,1), Vg(:,2), '*');
    a{g}=num2str(Vu(g));
end
legend(a);

例子M

M = zeros(1000);
M(200,30) = 7;
M(100, 900) = 10;
M(150, 901) = 13;
M(600, 600) = 13;

结果:

在此处输入图片说明

现在我可以回答问题的第一部分。 我想你需要做些类似的事情

sum(histc(A, unique(A)),2)

计算矩阵中唯一值的数量。

temp = histc(A, unique(A)) “是列直方图计数的矩阵。” 因此,您将获得出现在A列中的unique(A)所有值的计数。

我正在做stat = sum(temp,2)以获取整个矩阵中unique(A)所有值的计数。

然后,您可以使用@Dan提出的代码来可视化结果。

hold all; 
u=unique(A);
for i = 1:length(stat) 
plot(u(i), stat(i)/max(stat), '*');
end

请阐明您的价值观之间的关系是什么样的?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM