我有任意点(X,Y),有两个相应的特征值。
我决定将特征值分为三类,即:
我想把它绘制出来,用不同颜色在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;
答案 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);
示例输出:
这是一种使用逻辑索引进行无循环分类的方法:
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;