2012-07-23 2 views
0

눈 추적기에서 데이터를 관리하는 솔루션을 작성 중입니다. I는 현재 다음 컬럼으로하는 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); 

성능면에서, 구조체는 매트릭스보다 느리게 될 것입니다 구조체. @HMuster가 제안한 것처럼 수치 상수를 대체하기 위해 읽을 수있는 상수를 사용하십시오.