是否可以在Matlab中更改“颜色图”比例?

时间:2019-01-18 10:38:15

标签: matlab matlab-figure colormap

我有2个矩阵。矩阵E的值介于0到1之间,矩阵A的值介于0到90之间。我想为每个矩阵中的数字显示不同颜色的图像。

当我将B函数用于:

colormap

当我应该有几种颜色时(因为我使用的是figure; colormap(jet); imshow(A); ),显示的图像具有多种灰度等级。

当我将jet函数用于:

colormap

显示的图像完全是白色的,可能是因为我的值高于64(这是figure; colormap(jet); imshow(B); 的最大值)。

我该如何解决这两个问题?我在几个论坛上阅读了很多教程,但找不到答案...

非常感谢您回答我的问题!

3 个答案:

答案 0 :(得分:0)

如果值大于1,只需通过其最大值对矩阵进行归一化。因此,对于您的B矩阵,请尝试:

imshow(B/max(B(:)))

答案 1 :(得分:0)

您可以像这样指定颜色图缩放比例和颜色图中的实际颜色数量:

figure; imshow( A, [0 1], 'Colormap', jet(100) );
figure; imshow( B, [0 100], 'Colormap', jet(100) );

jet(100)表示要使用的颜色图中的100种唯一颜色。

答案 2 :(得分:0)

您正在执行的任务使用了错误的功能。
imshow期望图像的RGB通道的N×M×3阵列输入。当您使用2D矩阵时,函数会假定它是灰度图像(就像将其复制到3个相同的矩阵中以创建这三个通道一样-如果RGB中的所有通道都具有相同的值,则您将获得灰度颜色)。您can use this function together with a colormap得到一个彩色矩阵,但是有更方便的选择。

获取矩阵彩色表示的一个简单函数是imagesc或(image,如果您想自己缩放值)。此函数获取矩阵中的值,然后从您选择的颜色图中为它们分配颜色:

A = rand(10);
figure; colormap(jet); imagesc(A);

imagesc result

另一个选项是pcolor,它的工作原理略有不同,但结果相似。 pcolor将值附加到像元的顶点(与imagesc一样,相对于中心),并从每个像元的顶点插入颜色。生成的彩色矩阵总是在一行和一列中较小,因为它需要 n + 1 个点(原始矩阵中的值)来定义 n 个间隙(彩色矩阵)。这是一个示例:

A = rand(10);
figure; colormap(jet); pcolor(A);
shading flat

pcolor result

相关问题