MATLAB:如何在矩阵中设置颜色

4
我有一个N*N的矩阵,包含三个不同的值,例如0、0.5和1。我该如何打印出一个图像,其中每个值都代表不同的颜色?
重要提示:由于矩阵是循环的,因此值可能会发生变化(我希望在每次迭代时打印矩阵)。
我尝试使用colormap,如果矩阵中有所有三个值,它可以正常工作,但当只剩下一两个值时,颜色会改变。
我希望它能够正常工作:矩阵中包含值为0、0.5和1,打印到屏幕上的矩阵中,每个单元格包含0为黑色、0.5为绿色、1为黄色。
非常感谢!

几天前有一个类似的问题,链接在这里:http://stackoverflow.com/questions/14347792/images-from-matrix-in-matlab/14348724#14348724 - Karthik V
2个回答

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


谢谢,这个很好用,但还是有些问题。 如果矩阵全是1、0或其他数字,我得到的是一个绿色的矩阵,而不是我想要的颜色。 对于一个全是0的矩阵,我想要得到黑色的矩阵,但输出却是绿色的。 你知道该怎么做吗? - itaied
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); colormap(cmap); imagesc(b); colormap(cmap); 我希望 a 能够全部是黑色,而 b 能够全部是黄色 但实际上它们两个都呈现绿色 - itaied
执行以下代码:clims = [0 1]; imagesc(a,clims); - Smash

0

我建议尝试使用imagsec或其他颜色缩放方法。从灰度开始尝试,RGB会稍微复杂一些。


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