1

ベクトルのリストを表す 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 が後続のシングルトン次元をサポートしていないということですか? つまり、計算でストライド配列をサポートせず、連続した配列のみをサポートしますか? 控えめに言っても、それはかなり制限的です。

ありがとう、リュック

4

1 に答える 1

1

単純な形状変更でうまくいくのではないでしょうか?

ILArray<int> I = ILMath.counter<int>(1,1,ILMath.size(5,4,3));

I
<Int32> [5,4,3]
    [0]: (:,:,0)
    [1]:          1          6         11         16
    [2]:          2          7         12         17
    [3]:          3          8         13         18
    [4]:          4          9         14         19
    [5]:          5         10         15         20
    [6]: (:,:,1)
    [7]:         21         26         31         36
    [8]:         22         27         32         37
    [9]:         23         28         33         38
    [10]:         24         29         34         39
    [11]:         25         30         35         40
    [12]: (:,:,2)
    [13]:         41         46         51         56
    [14]:         42         47         52         57
    [15]:         43         48         53         58
    [16]:         44         49         54         59
    [17]:         45         50         55         60

I["0;:;:"]
<Int32> [1,4,3]
    [0]: (:,:,0)
    [1]:          1          6         11         16
    [2]: (:,:,1)
    [3]:         21         26         31         36
    [4]: (:,:,2)
    [5]:         41         46         51         56

ILMath.reshape(I["0;:;:"],4,3)
<Int32> [4,3]
    [0]:          1         21         41
    [1]:          6         26         46
    [2]:         11         31         51
    [3]:         16         36         56

機能squeezeがあればもっと便利です。次のリリースのいずれかに実装するために、バグトラッカーで機能リクエストを開くことができます: http://ilnumerics.net/mantis

于 2014-01-10T14:24:06.317 に答える