0

我正在编写一个管理来自眼动仪的数据的解决方案。我目前将数据保存在 N x 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 的管理,我是否缺少一些东西,或者我最好还是省去麻烦并坚持使用矩阵方法?

4

2 回答 2

0

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

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

例如,使用这些变量,您可以编写非常有意义的查询,而不是dataStream(600,1)编写:

dataStream(600, xPosition)

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

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

一次查询多个列。

于 2012-07-23T11:21:07.203 回答
0

您可以轻松复制结构

s = struct(another_struct);

在性能方面,struct 会比 matrix 慢。按照@H.Muster 的建议,使用可读常量替换您的数字索引。

于 2012-07-23T11:32:10.727 回答