gpt4 book ai didi

perl - 是否有 PDL API 的符号实现?

转载 作者:行者123 更新时间:2023-12-05 05:03:28 24 4
gpt4 key购买 nike

为了测试矩阵算法,我希望能够使用变量而不是数字进行计算,但不更改算法本身。

我认为存在解决方案(但可能还有其他同样受欢迎的解决方案)的方向是在 PDL 中使用多态性或将 PDL 库替换为具有与 PDL 相同 API 的符号库。

为了说明我的观点,下面是一个使用 PDL 实现的简单算法:

use utf8;
use strict;
use warnings;
use PDL;

sub algorithm ($$) {
my $alpha = shift;
my $beta = shift;

my $A = pdl(
[ cos $alpha, -sin $alpha ],
[ sin $alpha, cos $alpha ],
);

my $B = pdl(
[ cos $beta, -sin $beta ],
[ sin $beta, cos $beta ],
);

print $A x $B;
}

现在要测试代码,而不是像这样调用很多

algorithm 0.1, 0.1;
algorithm 0.2, 0.1;
algorithm 0.1, 0.2;

使用类似于

的单个调用
algorithm 'α', 'β';

或者——同样可以接受——类似于

algorithm pdl('α'), pdl('β');

最终会输出命名变量 αβ 中的项矩阵(当然,拉丁变量名称 ab 应该是同样可能的)。

理想情况下,无需为此更改算法中的任何内容;最后,我想按原样测试算法,而不是不同的算法。在 header 中添加 use PDL::Symbolic qw( pdl );use SPDL qw( pdl ); 语句作为 use PDL;< 的扩展或替换 对我来说似乎是一个可以接受的小异常(exception),不改变任何东西的规则。

我想到的唯一解决方案基本上是重新实现 PDL API,至少是我的算法中使用的函数,并且可能较少考虑效率,但使用符号对象而不是每个 piddle 单元格,并且可能为较大的 piddles 中的单元格扩展了索引命名功能,以提高可用性。

有没有比自己从头开始编写这个库更好的方法?

最佳答案

非常简短的回答:不。

稍微更有帮助的答案:PDL 的全部目的是在计算机内存(使用“共享内存”模型)中以极快的速度对二进制数据进行操作(就像 C 或 Fortran 那样)。您描述的是一个完全不同的软件。

关于perl - 是否有 PDL API 的符号实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61628764/

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