ベクトルのリストを表す 2 次元配列 'v' と、行列のリストを表す 3 次元配列 'a' があります。
ILArray v = counter(2, 3);
ILArray a = counter(2, 3, 3);
ここで、両方の部分配列を取り、行列の乗算を実行します。
ILArray av = multiply(a[1,full,full], v[1,full]);
次元が一致しないと不平を言うでしょう。これは、の次元がa[1,full,full]
is(1,3,3)
と of v[1,full]
isであるためです(1,3)
。つまり、サブ配列には単一次元が含まれます。matlab では、squeeze() を使用してこれらのシングルトン ディメンションを削除できます。しかし、ILNumerics でそれを行うにはどうすればよいでしょうか?
シングルトン次元が末尾にある場合、それらは ILNumerics によって自動的に削除されることを発見したので、これは機能します:
ILArray v = counter(3, 2);
ILArray a = counter(3, 3, 2);
ILArray av = multiply(a[full,full, 1], v[full, 1]);
また、a[full,full,1]
次元はありますが(3,3)
、ありません(3,3,1)
。
これは、ILNumerics が後続のシングルトン次元をサポートしていないということですか? つまり、計算でストライド配列をサポートせず、連続した配列のみをサポートしますか? 控えめに言っても、それはかなり制限的です。
ありがとう、リュック