2013-01-24 266 views
4

我有一个矩阵N * N,有三个不同的值,例如0,0.5,1。我怎样才能在屏幕上打印图像,其中每个值代表不同的颜色? 重要:矩阵是一个循环,所以值可能会改变(我想每次迭代打印矩阵)。MATLAB:如何设置矩阵的颜色

我试图使用色彩地图,它工作正常,如果所有三个值都在矩阵中,但是只有一个或两个值保留时,颜色已更改。

我想如何工作:值为0,0.5,1的矩阵在屏幕上打印一个矩阵,每个单元格包含0个黑色,0.5个绿色,1个黄色。

非常感谢!

+0

前几天有一个[问题](http://stackoverflow.com/questions/14347792/images-from-matrix-in-matlab/14348724#14348724)沿着相同的路线。 –

回答

5

刚刚创建自己的颜色映射仅具有三个可能的值:

a = [1 0.5 0;1 .5 0;0.5 0 1]; 
b = [1 0 1;1 1 0;0 0 1]; 
cmap = [0,0,0;0,1,0;1,1,0]; 
clims = [0 1]; 
imagesc(a,clims); colormap(cmap); 
imagesc(b,clims); colormap(cmap); 

a给出:

a

B给出:

enter image description here

+0

谢谢你的工作很不错,但还是有些不好。 如果矩阵是全1,或零,或任何其他数字,我得到一个绿色的印刷矩阵,而不是我想要的颜色。 对于一个完整的零矩阵,我想得到黑色矩阵,但输出是绿色的。 你知道该怎么办? – Kickapoo

+0

请分享您的密码 – Gilad

+0

a = [0 0 0; 0 0 0; 0 0 0]; b = [1 1 1; 1 1 1; 1 1 1]; cmap = [0,0,0; ​​0,1,0; 1,1,0]; imagesc(a);颜色表(CMAP); imagesc(b);颜色表(CMAP); 我想要一个全是黑色的,而且b全部是黄色的 而不是我得到它们两个都是绿色的 – Kickapoo

0

我会尝试可能imagsec。或者对颜色进行任何其他缩放。从灰度开始。 RGB将变得更复杂