0

アイトラッカーからのデータを管理するソリューションを書いています。私は現在、次の列を持つNx5マトリックスでデータを保持しています。

X Position, Y Position, timestamp, Velocity, Acceleration

各行は、アイトラッカー(1000Hzで実行)からの単一のサンプルを表します。

現在、マトリックスの形式でデータにアクセスしています。たとえば、サンプル#600の速度にアクセスする場合は、「dataStream(600,4)」を使用します。

これは問題ありませんが、コードをもっと読みやすくしたいと思います。「4」は混乱を招く可能性があります。dataStream.velocity(600)のようなものが理想的です。これはSTRUCTの単純な使用法であることを理解しています。ただし、サンプル全体(つまり、マトリックスの1つの行からすべての列)をコピーする必要がある場合があります。私が理解しているように、これは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);

パフォーマンスの観点から、構造体はマトリックスよりも遅くなります。@ H.Musterによって提案されているように、読み取り可能な定数を使用して数値インデックスを置き換えます。

于 2012-07-23T11:32:10.727 に答える