gpt4 book ai didi

j - 在 APL 中,如何将向量(长度为 n)转换为对角矩阵(nxn)?

转载 作者:行者123 更新时间:2023-12-04 12:17:42 24 4
gpt4 key购买 nike

我有一个我在 1985 年写的 J 程序(在 vax vms 上)。一节是从向量创建对角矩阵。

a=(n,n)R1,nR0
b=In
a=bXa

也许它不是 J 而是 ascii 中的 APL,但是这些行在当前的 J 中工作(在原始函数中进行了适当的更改)。但不在 APL(gnu、NARS2000 或 ELI)中。我在最后一行收到域错误。
有没有一种简单的方法可以在不循环的情况下做到这一点?

最佳答案

您的代码是 APL 的 ASCII 音译。对应的J代码为:

a=.(n,n)$1,n$0
b=.i.n
a=.b*a

Try it online!但是,没有 APL(目前 - 正在考虑用于 Dyalog APL )具有最后一行所需的主要单元格扩展。因此,您需要指定向量的标量 b应该乘以矩阵的行 a使用括号轴符号:
a←(n,n)⍴1,n⍴0
b←⍳n
a←b×[1]a

Try it online!或者,您可以使用排名运算符(如果可用):
a←(n,n)⍴1,n⍴0
b←⍳n
a←b(×⍤0 1)a

Try it online!

关于j - 在 APL 中,如何将向量(长度为 n)转换为对角矩阵(nxn)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com