web-dev-qa-db-ja.com

MATLABのnumel関数とlength関数の違い

length(x)max(size(x))を返し、numel(x)はxの要素の総数を返すことを知っていますが、1×nの配列の場合はどちらが良いですか?それは問題ですか、またはこの場合それらは交換可能ですか?

編集:キックのみ:

alt text

10万個の要素に到達するまで、パフォーマンスは同じです。

40
Doresoom

その場合、それらは同じものを返し、違いはありません。パフォーマンスに関しては、MATLABの配列の内部動作に依存します。例えば。配列に要素の数に関するメタ情報がある場合(形状に関係なく)、numelは可能な限り高速ですが、max(size(x))は同じもの(サイズの取得、および次に、それらの中の最大値を見つけます)。私はその場合numelを使用するのに慣れていますが、パフォーマンススピーチ(仮説)は別として、それらは交換可能と言えます。

19
ShinTakezou

1行N列の配列の場合、それらは基本的に同じです。多次元配列Mの場合、さまざまな結果が得られます。

  • numel(M)prod(size(M))と同等です。
  • length(M)max(size(M))と同等です。 Mが空の場合(つまり、いずれかの次元が0の場合)、length(M)は0になります。
20
gnovice