根据值在X-Y平面上使用颜色的2D绘图

时间:2014-08-28 09:18:08

标签: matlab colors plot

我有任意点(X,Y),有两个相应的特征值。

我决定将特征值分为三类,即:

  1. 两者> 0
  2. 两者< 0
  3. 其中一个= 0
  4. 1个特征值> 0,第二特征值< 0
  5. 我想把它绘制出来,用不同颜色在X-Y平面上对每个点(X,Y)进行颜色编码。

    我使用过imagesc,但没有显示X-Y平面。

    这是我想要得到的草图,其中颜色编码表示为该特定(X,Y)获得的特征值的场景。

    Sketch http://i59.tinypic.com/1y1qmv.jpg 附:对不起,应该还有1个案例,即1个特征值> 0,第二特征值< 0

    有人可以指导我到可以阅读更多相关内容的地方吗?

    编辑:这是我的代码。

    vecStor 是一个2 x n 矩阵,在每个相应的行中存储特征值。

    %e.g     vecStor = [ 1 2 3 ; 4 5 6] 
    %eigenvalues 1 and 4 corresponds to (X1,Y1)
    %eigenvalues 2 and 5 corresponds to (X2,Y2)
    

    接下来我为每个“案例”分配了一个值 其中 l 是for循环运行 vecStor

    的计数器
    if (vecStor(1,l) < 0 && vecStor(2,l) < 0)
    fprintf('Double Neg\n')
    colourStore(l,1) = -3;
    
    else if (vecStor(1,l) > 0 && vecStor(2,l) > 0)
    fprintf('Double Pos\n')
    colourStore(l,1) = +3;
    
    else if (vecStor(1,l) > 0 && vecStor(2,l) < 0)
    fprintf('One Pos One Neg!\n')
    colourStore(l,1) = -1;
    
    else if (vecStor(1,l) == 0 || vecStor(2,l)  == 0)
    fprintf('One Zero!\n')
    colourStore(l,1) = +1;
    

    最后我把它绘制出来

    img=colourStore';
    imagesc(img);
    axis image;
    

1 个答案:

答案 0 :(得分:1)

输入数据(vecStore)应为维度为NxMx2的三维向量,其中N为行数(或Y高度),M为列数(或X宽度)和第三维的大小为2(每个X / Y值有两个特征值)。让我们创建一个代表你的特征值的随机矩阵:

numRows = 10;
numColumns = 10;
vecStor = randn(numRows,numColumns,2);

然后检查矩阵中每个元素的条件,类似于您在代码片段中所做的操作。循环遍历所有行和列,并根据特征值属性创建包含四个不同值的二维颜色映射:

colourStore = zeros(numRows,numColumns);
for r = 1:size(vecStor, 1)
    for c = 1:size(vecStor, 2)
        if (vecStor(r,c,1) < 0 && vecStor(r,c,2) < 0)
            % Double Neg
            colourStore(r,c) = -3;            
        elseif (vecStor(r,c,1) > 0 && vecStor(r,c,2) > 0)
            % Double Pos
            colourStore(r,c) = +3;            
        elseif (vecStor(r,c,1) > 0 && vecStor(r,c,2) < 0)
            % First Pos, Second Neg
            colourStore(r,c) = -1;            
        elseif (vecStor(r,c,1) == 0 || vecStor(r,c,2)  == 0)
            % One Zero
            colourStore(r,c) = +1;
        end
    end
end

最后,将colourStore绘制为彩色图像:

imagesc(colourStore);

示例输出:

Eigenvalues color plot

修改

这是一种使用逻辑索引进行无循环分类的方法:

colourStore(vecStor(:,:,1) < 0 & vecStor(:,:,2) < 0 ) = -3;
colourStore(vecStor(:,:,1) > 0 & vecStor(:,:,2) > 0) = 3;
colourStore(vecStor(:,:,1) > 0 & vecStor(:,:,2) < 0) = -1;
colourStore(vecStor(:,:,1) == 0 | vecStor(:,:,2) == 0) = 1;