3

たとえば、次のように記述します。

x = int8.empty(0,5)

whos x出力:

% Name    Size    Bytes    Class    Attributes
% x       0x5     0        int8     

0x5したがって、 class の空の配列を取得しますint8

メモリサイズが 0 バイトの場合、null 以外の次元を含む空の配列を事前に割り当てる目的は何ですか?

その場合

x = int8.empty(0,5)

よりも便利です

x = int8.empty(0,0)

int8.empty(0,5)まだメモリの 5 つの「スロット」を事前に割り当てていますか?

4

2 に答える 2

4

私は 0 行 n 列のベクトルの実用的なユース ケースに出くわしました。Matlab の新しい宣言型プロパティと引数の制約を使用すると、「x は N 行 1 列でなければならない」または「z は b n- by-3" (:,1) または (:,3) として宣言します。これにより、空集合を準拠した方法で表すことができます。

そうする正式な理由もあります: 関数または演算は、「m 行 n 列の配列を取り、k = somefunction( m またはその値)"、および k がゼロであることが判明した退化したケースでは、いくつかの非ゼロの次元を持つ空の配列により、このような操作がそれらの契約に厳密に従うことができます。

実際には、連結などの基本的な操作では、すべての空の配列は通常交換可能であり、通常は Just Work またはせいぜい警告を生成します。

于 2020-10-16T02:47:43.967 に答える