代码之家  ›  专栏  ›  技术社区  ›  Javier Romero.

用颜色绘制矩阵

  •  1
  • Javier Romero.  · 技术社区  · 7 年前

    我正在做一个大学项目,我需要绘制一个矩阵单元格的图形,并根据其值用颜色填充它们,但我对颜色矩阵有很多问题,因为我无法将其用作填充函数的输入。

    这样做的目的是获得类似于下图的内容,但我在代码坐标中添加了一些限制。

    expected result

    function [ output_args ] = drawMatrix(Table)
    
    [m,n]=size(Table); %Get the size of the matrix;
    X = 1-0.5:1:n+0.5; %Array with the X coordinates of each cell. 
    Y = 1-0.5:1:m+0.5; %Array with the Y coordinates of each cell.
    C = repmat('w',[m,n]); %Color matrix to represent the color of each single cell, originally all in white.
    [x,y]=meshgrid(X,Y); %Creates the coordinates of the cells of the matrix.
    for a=1:m
        for b=1:n
            if Table (a,b) == 1 
                C(a,b)='b'; % If the value of the original cell is 1, the color is changed to blue.
            end
        end
    end
    photo = fill(x', y', C)
    

    输入矩阵为:

    [0, 0, 1, 1, 0;
     0, 1, 1, 0, 0;
     0, 0, 1, 0, 0;
     1, 0, 0, 0, 0]
    

    我收到以下错误:

    使用时出错 fill
    中的错误 color/linetype 论点

    中的错误 drawMatrix (第20行)
    photo = fill(x', y', C);

    2 回复  |  直到 3 年前
        1
  •  2
  •   Sardar Usama    7 年前

    正如您所提到的,您希望蓝色代表1,黄色代表0,这与 imagesc 默认情况下为。因此,需要反转 Table 矩阵并将其交给 图像SC 作用

    imagesc(~Table)
    

    output

        2
  •  0
  •   halfer    3 年前

    (代表问题作者发布,将其移至答案部分) .

    多亏了萨达尔·乌萨马,我才找到了问题的解决方案。代码如下:

    function [ output_args ] = drawMatrix(Table)
    colors = [1,1,1;0,0,0]; %RGB colors to use 
    %(2 in my case,because only has 2 possible values).
    values = [0,1]; %The 2 possible values.
    imagesc(Table,values); %Creates an image with the matrix Table and the 
    range of values.
    colormap(colors); %
    axis off;