0

コードを合理化しようとしています。2列の配列があり、そこから列の平均を抽出してXとYとして格納します。

次のコードを使用してみました。

[x y] = mean(theArray);

...しかし、これは

??? Error using ==> mean
Too many output arguments.

今のところ、私は3つの線で解決しました:

coords = mean(theArray);
x = coords(1);
y = coords(2);

これを3行未満で行うもっと簡単な方法があるはずです。私のコードは1000Hzで視線追跡デバイスを実行しており、不要な処理を避けたいです...

ありがたいことに受けた知恵

4

2 に答える 2

2

2行で:

x = mean(theArray(:,1));
y = mean(theArray(:,2));
于 2012-01-20T19:55:22.770 に答える
1

あなたのコードはすでに非常に単純です。これまたは同様のインライン配列再配置コードを使用して、ワンライナーで実行できます。

[x,y] = deal(mean(theArray(:,1)), mean(theArray(:,2)));

しかし、効率という点では、元の 3 ライナーの方がおそらく優れています。呼び出しの前に配列を分割するmeanと、より多くのメモリが割り当てられ、余分なmean()呼び出しが必要になります。余分なメモリとmean().

tmp = mean(theArray);
[x,y] = deal(tmp(1), tmp(2));

しかし、これは元のコードと同じことを実行するだけであり、実行時に追加の関数呼び出しを実行して紙に 1 行節約します。

コードを Matlab プロファイラーに投入しprofile on、最適化を試みる前に実際に問題があるかどうかを確認してください。これらのどれも実際には区別できないと思います。その場合、最も読みやすいものに固執することができます。

于 2012-01-20T20:03:14.623 に答える