Matlab 如何将单个颜色设置为大于0但小于1的值?

Matlab 如何将单个颜色设置为大于0但小于1的值?,matlab,Matlab,我有一个矩阵nxn,例如: [ 0 1 1 ; 0.2 1 0.1; 0 0.4 0] 我想要可视化我的矩阵,我想要: 所有值=1为黑色 所有介于0和1之间的值(0

我有一个矩阵nxn,例如:

[ 0   1    1 ;
 0.2  1   0.1; 
  0  0.4   0] 
我想要可视化我的矩阵,我想要:

  • 所有值=1为黑色

  • 所有介于0和1之间的值(0ind2rgb创建RGB图像:

    • 将索引图像转换为“索引图像”(展开256,四舍五入)-索引图像元素必须为整数
    • 创建符合范围条件的颜色贴图
    • 使用
      ind2rgb
      将X转换为带有已创建颜色贴图的RGB图像
    检查以下代码示例:

    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);
    
    该解决方案不是最简单的解决方案,但可用于解决更一般的可视化问题

    结果(放大):

    太好了。你试过什么吗?