2011-09-23 70 views
0

我有一个3d数组。第一个dim是像素的x坐标三维测试MATLAB

第二个维度是像素的y坐标。 第三个坐标是时间(或可能是帧号)。

我想做一个测试,看看每个帧(沿着第三维)是否有任何像素等于零。

我该如何写这个测试?

我需要返回总是正确的像素!

+0

我知道这可能涉及到所有功能,但我不确定在执行 – Timtam

+0

这应该是微不足道的知道如何编码的人,不幸的是我很缺乏经验,我很欣赏你的时间 – Timtam

+0

我看到一些蹩脚解决方案,如测试vs i + 1帧,然后把它扔在一个循环中...但是必须有一个更简单的方法 – Timtam

回答

1

而不是all您可以使用any。如果我理解正确的话,代码会去像这样的一个“像素”

any(A(x,y,:)) 

其中A是3D矩阵。如果结果是1,则给定像素对于至少一个帧确实具有非零值,否则为0

+0

我得到它使用所有(X,暗淡)指定工作随着时间的推移,这个解决方案虽然很好,但即使我在任何人回答之前找到了答案......(我有点不太明显) – Timtam

+0

根据我如何理解您的问题,您想要“测试以查看是否有像素每个单帧等于零“。 'all(X,dim)'将返回2d矩阵,其中对于给定像素,如果像素具有*至少一个*零,那么'0'。为了得到一个所有像素都为0的矩阵,每个帧都被清零,你应该使用'any(X,dim)'。如果我误解了你,请纠正我。 – triazotan

+0

你是对的,那是因为我的目的,它是真的或者是真的无关紧要,我只是对跨越时间维度捕获数据感兴趣,但是,我看到它很容易,我是满意的解决方案谢谢 – Timtam