可视化不完整的2D数组

时间:2014-07-16 08:04:18

标签: arrays matlab mesh

如何使用曲面(meshsurf)可视化具有不完整数据集的2D数组?

'不完全'表示{v - 已知值,0 - 未知):

    1 | 2 | 3 | 4 | 5
1 | v | 0 | v | 0 | v
2 | 0 | 0 | 0 | 0 | 0
3 | v | 0 | v | 0 | v
4 | v | 0 | v | 0 | v
5 | 0 | 0 | 0 | 0 | 0

这种数据索引对于分析变量之间的非线性关系很方便。

我想要的是用plot函数以某种方式工作。可以说,x = [1,2,4,5]plot将显示连续数字。

对于没有手动插值的2D阵列,是否可以这样做?不要关心光滑度。已知点的线性连接没问题。

2 个答案:

答案 0 :(得分:1)

所以你有非线性采样(x = [1 3 5]y = [1 3 4]),你不想进行插值?我不认为surf等会处理它。听起来像是plot3的工作。

这有点丑陋(见结果),但我假设您只想将其可视化以了解数据。首先使用xy组成repmat,如果您还没有这样的话:

x =

     1     3     5
     1     3     5
     1     3     5

y =

     1     1     1
     3     3     3
     4     4     4

然后你需要你的值,而不是所有的零匹配:

z =

     6     8    10
     6     5     4
     4     2     1

这可以用标记绘制(如果你有很多分数,可能是最简单的)。或者你可以用这个技巧制作一个"网格"中两行:

plot3(x,y,z)
hold on
plot3(x',y',z')
xlabel('x');
ylabel('y');

正如您的plot示例一样,这只是现有点之间的线性连接。

enter image description here

答案 1 :(得分:0)

您可以替换0值的NaN值。 surfmesh都与NaN一起使用。