xの要素の総数をlength(x)
返しmax(size(x))
たり返したりすることは知っていますが、1行n列の配列にはどちらが適していますか?numel(x)
それは重要ですか、それともこの場合は互換性がありますか?
編集:キックのためだけに:
10万個の要素に到達するまで、パフォーマンス的には同じように見えます。
xの要素の総数をlength(x)
返しmax(size(x))
たり返したりすることは知っていますが、1行n列の配列にはどちらが適していますか?numel(x)
それは重要ですか、それともこの場合は互換性がありますか?
編集:キックのためだけに:
10万個の要素に到達するまで、パフォーマンス的には同じように見えます。
その場合、それらは同じものを返し、違いはありません。パフォーマンスの点では、MATLABの配列の内部動作に依存します。たとえば、配列に含まれる要素の数に関するメタ情報がある場合(形状に関係なく)、numelは可能な限り高速ですが、max(size(x))は、同じものを取得するためにより多くの作業が必要になるようです(サイズを取得します。そして、それらの中から最大値を見つけます)。私はその場合に使用するのに慣れていますnumel
が、パフォーマンススピーチ(仮想)は別として、それらは交換可能であると言えます。
他の人が言ったように、それらは一次元配列でも同じです。
コードの可読性の観点からのIMHOはlength
、1次元配列で使用する必要があります。それは「インテンショナルプログラミング」についてです。コードを見て、プログラマーが自分の仕事を思いついたときに何を考えていたかを理解します。ですから、私が見るnumel
と、それがマトリックスで使用されていることがわかります。
length
vs.numel
は、何年にもわたって私たちのチームで議論されたトピックでした。元上級開発者は、コードの信頼性については気にせずnumel
、他の方法では読みにくい/フォーマットされたコードでのみ行われ、使用される作業についてのみ気にしました。他の人は数学者でありlength
、彼のために「実際の」配列である数値配列でのみ使用されます。セル配列と構造体配列には、彼が使用しnumel
ました。