【发布时间】:2014-10-09 02:32:49
【问题描述】:
我有一个 500x500 的单元矩阵,每次迭代都会更新。我正在模拟随机过程,结果新值出现或消失。我想要做的是给值-1 和0 一个固定的颜色代码(比如说绿色和蓝色)。所有其他值(从1 到矩阵中的最大值)可以是与包含-1 或0 的单元格不同的颜色。可以为所有大于0 的值插入颜色。我知道caxis 函数,但这让我只排除-1 和0 的值或从-1 开始进行插值。这个问题有什么解决办法吗?它也需要是一个快速的解决方案,因为每次迭代都会打印矩阵......
[解决方案]
tic
a = randi([-1,10],100,100);
cint = [-1,0,linspace(1,10,10)];
cmap = [0,0,1;0,1,0;autumn(10)];
[~,c] = histc(a,cint);
d = cmap(reshape(c,10000,1),:);
for k=1:3
im(:,:,k) = reshape(d(:,k),100,100);
end
image(im)
toc
【问题讨论】:
-
我认为您的问题有点不清楚,因为您没有提供您正在处理/想要处理的单元矩阵的任何示例。我可能是错的,但我不能开始我建议你用单元矩阵重写问题,以便我们得到更好的图片。
-
如果我理解正确,您可以为此创建一个自定义颜色图,只是保持初始范围的颜色不变:stackoverflow.com/questions/17230837/… 如果您走这条路线,我建议您预先选择一个最大(颜色)值并保持不变
-
这里有点不清楚。您似乎在这里要求两件事并将它们相互混合。您提到要为值分配颜色以及要插入颜色。你对哪一个有问题?此外,“细胞矩阵”是否应该代表图像?在这种情况下,我建议您像 matlab 一样使用 3d 矩阵。
-
矩阵包含 -1、0 和可变数量的正数。我想将矩阵打印为图像,其中 -1 值显示为绿色单元格,0 值显示为蓝色,所有其他值可以是插值颜色,但应该不同于 -1 和 0 单元格的颜色(它们不能是一样的颜色!)。所以说我的最大值是 500。如果我使用默认设置,matlab 将插值从 -1 到 500 的颜色。我想修复 -1 和 0 值的颜色,并从 1 开始用不同的颜色进行插值。 @Dan,似乎这就是我要找的。一会儿试试看!
标签: matlab loops matrix colormap