oracle sql 字段值行 连乘,如何使用Oracle数据库将矩阵与其转置相乘,并使用utl_nla...

我有同样的问题,几天后,我确定UTL_NLA.BLAS_GEMM程序被破坏。 它在10.2g版本中被破坏,并且在版本11.2g中仍然出现相同的错误。 问题出在PL/SQL编写的包装程序中。 在参数TRANSA,TRANSB中的一个或两个被设置为'T'的情况下,它不正确地处理参数 M,N,K,LDA,LDB,LDC, 。 毫不奇怪,它正在工作,当矩阵是一个sqare矩阵时,例如 矩阵A是100x100并且相关参数TRANSA ='T'。 程序UTL_NLS.BLAS_GEMM也会在这种情况下错误地处理参数, 但它们是相等的,所以它不起作用。 我使用的解决方法很简单:在我调用过程之前,我转置了相关矩阵, ,我用设置TRANSA ='N'和TRANSB ='N'的BLAS_GEMM。 不幸的是,在UTL_NLA包不转程序(顺便说一句BLAS有一个), 而是写一个不是什么大不了的事:

PROCEDURE MatTranspose (nRows IN NUMBER, /* number of rows in A */

nCols IN NUMBER, /* number of columns in A */

mat_A IN utl_nla_array_dbl, /* supposed it is stored column-wise i.e. 'C' */

mat_At IN OUT utl_nla_array_dbl) IS

/* the array can be larger then nRow * nCol, the rest part is not handled in either matrices */

nIii NUMBER;

nJjj NUMBER;

BEGIN

FOR nIii IN 1 .. nRows LOOP

FOR nJjj IN 1 .. nCols LOOP

mat_At (nJjj + nCols * (nIii - 1)) := mat_A (nIii + nRows * (nJjj - 1));

END LOOP;

END LOOP;

END MatTranspose;

对我来说,真正的痛苦是文档,例如e40758.pdf。 它也是错误的,例如见p。 232-26,它误导了我,让我觉得我通过了错误的参数。 我花了几个小时在网上搜索一个工作的例子,但是 - 当然 - 徒然。 这可能是BLAS_GEMM过程中的一个简单错误,它需要我们修复一半, ,然而开发人员正在等待6年以上才能获得正确的版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值