2013-07-27 65 views
0

嗨我正在尝试绘制图像。如何使用坐标和灰度矩阵矩阵绘制图像

我有三个矩阵:

基质A:X坐标

矩阵B:Y坐标

矩阵C:图像灰度

X,Y坐标可是整数,小数点还是NaN。 如果任何矩阵点是NaN,我不会画那个点。

例如:

A = [1, 1;  B = [1, 2;  C = [1, 2; 
    2, 2;   1, 2;   3, 4; 
    NaN,3 ]   4, 4 ]   5, NaN] 

我会在X(1)Y(1)情节与C(1)值的点。值1以(1,1)值2画出在(1,2)值3描绘在(2,1)值4绘制被绘制在(2,2)

然而,B(3,1)C(3,1)不使用,因为A(3,1)为NaN。另外,因为C(3,2)NaN,所以不使用A(3,2)B(3,2)

任何建议或帮助实现此功能?..我感谢任何意见或建议。谢谢。

回答

3
% filter out the data with NaN's 
idx_filter = ~(isnan(A)|isnan(B)|isnan(C)); 

% create a color map 
cmap = gray(256); 

% plot using scatter (36 is default size) 
scatter(A(idx_filter),B(idx_filter),36,cmap(C(idx_filter),:)) 

颜色现在仍然看起来有点黑,因为您只使用整个1-256范围的一小部分。

+0

不错,打我几秒钟。你实际上不需要这些矢量,我认为'isnan'在矩阵上工作的很好。 – Schorsch

+0

是的,因为逻辑索引,它会自动将所有内容转换为向量。我会抛出它 –

+0

嗨我试过你的代码,我得到一个错误'下标索引必须是真正的正整数或逻辑。'为最后一行。任何想法可能会造成这种情况?是因为我对A和B有负值吗?或者我的C值是0〜1之间的值。也许我应该改变这个整数以某种方式...试图谷歌改变我的0〜1的比例为0〜256 –