KDB中2×3与3×2矩阵mmu运算报length错误原因及示例链接请求
KDB矩阵运算'length错误原因及示例
错误原因
- 元素级乘法
x*y报错:KDB中*是逐元素运算,要求两个操作数的维度完全匹配(行、列数一致)。你定义的2行3列和3行2列矩阵维度不匹配,因此触发'length错误。 - 矩阵乘法
mmu[x;y]报错:若触发'length错误,大概率是矩阵定义不规范。KDB中矩阵必须是每行长度一致的嵌套列表,如果你的x或y是扁平列表(如1 2 3 4 5 6)或结构不规整的嵌套,mmu会将其识别为一维数组,导致维度校验失败。
正确矩阵运算示例
1. 定义标准矩阵
// 2行3列矩阵x x: ((1 2 3); (4 5 6)) // 3行2列矩阵y y: ((7 8); (9 10); (11 12))
2. 矩阵乘法(mmu)
mmu[x;y] // 输出结果: // ((58 64); (139 154))
3. 元素级乘法(需维度匹配)
元素级乘法要求行列数完全一致,可通过转置调整维度:
// 转置y得到2行3列矩阵 y_t: flip y x*y_t // 输出结果: // ((7 18 33); (32 50 72))
内容的提问来源于stack exchange,提问作者Rajasekhar
相关产品推荐
相关产品推荐

