我正在使用以下数据结构:
x1a ← 2 1 ⍴ 1 0
x1b ← ⍬
x2a ← 2 2 ⍴ 1 1 0 0
x2b ← 2 1 ⍴ 1 0
x3a ← 1 2 ⍴ 1 0
x3b ← 1
q ← (x3a x3b) (x2a x2b) (x1a x1b)
并尝试等效于以下操作的行减少:
output ← x3b + x3a +.× x2b + x2a +.× x1a
我本以为结果将类似于以下内容,但是我无法获得正确的等级/操作:
{⍵[2] + ⍺[1] +.× ⍵[1]}/q
感谢任何建议或帮助!
答案 0 :(得分:2)
存在三个问题:
您正在使用⍵[1]
,它将为您提供⍵
的封闭元素。改用⊃
“ pick”。
您有错字:⍵[2]
应该改用⍺
,即2⊃⍺
您要简化的函数期望其正确的参数为两个元素向量,其中仅使用第一个元素。因此,它需要为下一次迭代返回这样的结构。
还请注意,由于/
需要将等级从1降低到0,因此结果将全部包含在内,并且还将插入虚拟元素,因此我们需要选择唯一元素的第一个元素,即⍬ 1⊃
:
x3b + x3a +.× x2b + x2a +.× x1a
3
⍬ 1⊃{((2⊃⍺) + (1⊃⍺) +.× (1⊃⍵)) 'dummy'}/q
3