Matlab 如何将单个颜色设置为大于0但小于1的值?
我有一个矩阵nxn,例如:Matlab 如何将单个颜色设置为大于0但小于1的值?,matlab,Matlab,我有一个矩阵nxn,例如: [ 0 1 1 ; 0.2 1 0.1; 0 0.4 0] 我想要可视化我的矩阵,我想要: 所有值=1为黑色 所有介于0和1之间的值(0
[ 0 1 1 ;
0.2 1 0.1;
0 0.4 0]
我想要可视化我的矩阵,我想要:
- 所有值=1为黑色
- 所有介于0和1之间的值(0
ind2rgb
创建RGB图像:- 将索引图像转换为“索引图像”(展开256,四舍五入)-索引图像元素必须为整数
- 创建符合范围条件的颜色贴图
- 使用
将X转换为带有已创建颜色贴图的RGB图像ind2rgb
A = [ 0 1 1;... 0.2 1 0.1;... 0 0.4 0]; %N - Number of elements in the color map (e.g 256) applies "quantization level". N = 256; %Convert A to "indexed image" in range [0, N]. X = round(A*N); %Create color map with N elements %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %R, G, B (Red, Green, Blue) applies three color components of color map. R = zeros(N, 1); G = zeros(N, 1); B = zeros(N, 1); %Create array of 100 values in range 0 to 1 V = linspace(0, 1, N); %All values = 1 to be black R(V == 1) = 0; G(V == 1) = 0; B(V == 1) = 0; %All values between 0 and 1 (0 < value <1) to be white R((V > 0) & (V < 1)) = 1; G((V > 0) & (V < 1)) = 1; B((V > 0) & (V < 1)) = 1; %All values = 0 to be a specific color (red for example). R(V == 0) = 1; G(V == 0) = 0; B(V == 0) = 0; %Concatenate color components, and form Nx3 color map. cmap = [R, G, B]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Convert A to RGB, using colormap cmap. RGB = ind2rgb(X, cmap); imshow(RGB);
该解决方案不是最简单的解决方案,但可用于解决更一般的可视化问题 结果(放大):A=[0 1;。。。 0.2 1 0.1;... 0 0.4 0]; %N-颜色映射中的元素数(例如256)应用“量化级别”。 N=256; %将索引图像转换为范围[0,N]内的“索引图像”。 X=圆形(A*N); %使用N个元素创建颜色贴图 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %R、 G、B(红、绿、蓝)应用颜色贴图的三个颜色分量。 R=零(N,1); G=零(N,1); B=零(N,1); %创建范围为0到1的100个值的数组 V=linspace(0,1,N); %所有值=1为黑色 R(V==1)=0; G(V==1)=0; B(V==1)=0; %0和1之间的所有值(0<值0)和(V<1))=1; G((V>0)和(V<1))=1; B((V>0)和(V<1))=1; %所有值=0表示特定颜色(例如红色)。 R(V==0)=1; G(V==0)=0; B(V==0)=0; %连接颜色组件,并形成Nx3颜色贴图。 cmap=[R,G,B]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %使用colormap cmap将A转换为RGB。 RGB=ind2rgb(X,cmap); imshow(RGB);
太好了。你试过什么吗?