2011-06-08 15 views
6

我想绘制一个矩阵,其中每个元素都处于两种状态之一。 (是模型..)Matlab中的相对标记图

现在,我想有一个国家有色和另一个白色。这适用于使用

[i,j] = find(S); 
figure(gcf); 
plothandle = scatter(i,j); 
axis([0 nNodes+1 0 nNodes+1]); 

在S保持自旋和一个状态等于0(找到仅返回非零元素的矩阵)

为了有一个有用的曲线图中,标记的尺寸在RELATIVE坐标中应该是1x1。因此,如果整个矩阵S将处于非零状态,则所有内容都将被着色。

但是,似乎Matlab只允许以磅或英寸为单位的MarkerSizes。我怎么能解决这个问题?

我的一个想法是,我发现了轴的点大小,然后可以轻松计算出我的标记应该有多大。然后,我将不得不创建一个回调函数,如果我想放大等。此外,我还没有找到一种方法(没有图像acq。工具箱)找出我的轴的绝对大小。

为了澄清我想要的东西:我怎么能用一个黑色的0和白色的0的矩阵来绘制一个棋盘?

回答

3

对于这种我一般喜欢IMAGEIMAGESCPCOLOR因为PCOLOR将不显示上次的显示数据当使用分面着色(默认)时矩阵的行和列。此外,IMAGEIMAGESC翻转y轴,因此图像更直观地匹配您在查看矩阵(即行从顶部1开始)时的想法。你可以想像你的矩阵是这样的:

S = round(rand(20));  %# Sample 20-by-20 matrix of ones and zeroes 
imagesc(S);    %# Plot the image 
colormap([1 1 1; 0 0 0]); %# Set the colormap to show white (zero elements) and 
          %# black (non-zero elements) 

而这里的样本图像:

enter image description here

1

正如一个建议,你可以尝试使用pcolor而不是'散”例子:

pcolor(hadamard(20)) 
colormap(gray(2)) 
axis ij 
axis square