2012-07-23 62 views
0

我正在编写一个管理眼动仪数据的解决方案。我目前保存数据以N×5矩阵,用以下的列:结构管理

X Position, Y Position, timestamp, Velocity, Acceleration 

每一行表示从眼睛跟踪器(其在1000Hz的运行)的单个样品。目前,我以矩阵的形式访问数据 - 例如,如果我想访问样本#600的速度,我使用'dataStream(600,4)'。

这很好,但我更喜欢我的代码更具可读性。 '4'可能会让人困惑;像dataStream.velocity(600)是理想的。我知道这将是STRUCT的简单使用。但是,在某些情况下,我需要复制整个样本(即矩阵的一行中的所有列)。据我了解,这在STRUCT对象中很难实现,因为每个STRUCT子标题中的各个数组都不是内在链接的。我必须(我认为)分别复制每个元素,例如,如果我想复制样本#100,我相信我需要复制dataStream.xPos(100),dataStream.yPos(100),dataStream.timestamp(100 )等。

有没有什么我失去了STRUCT的管理方面,或者我会更好地节省麻烦并坚持矩阵方法?

回答

0

如果只是为了提高可读性,我不会使用结构,而是通过为数据矩阵的不同列定义变量来使用一种非常简单的方法。例如见:

xPosition = 1; 
yPosition = 2; 
timestamp = 3; 
Velocity = 4; 
Acceleration = 5; 

有了这个变量,你可以写非常有意义的查询,例如,而不是dataStream(600,1)你可以这样写:

dataStream(600, xPosition) 

请注意,您还可以定义更复杂的查询,例如

position = [1 2]; 
wholeSample = 1:5; 

一次查询多个列。

0

您可以复制容易

s = struct(another_struct); 

在性能方面结构,结构会比矩阵慢。按照@ H.Muster的建议,使用可读的常量替换您的数字指数。