矩阵点积
-
// 复习一下矩阵的乘法 // [a00 a01 a02] [b00 b01 b02] // A=[a10 a11 a12] B=[b10 b11 b12] // [a20 a21 a22] [b20 b21 b22] // 将两个3*3的矩阵A,B相乘得到 // [a00*b00 + a01*b10 + a02*b20 a00*b01 + a01*b11 + a02*b21 a00*b02 + a01*b12 + a02*b22] // [a10*b00 + a11*b10 + a12*b20 a10*b01 + a11*b11 + a12*b21 a10*b02 + a11*b12 + a12*b22] // [a20*b00 + a21*b10 + a22*b20 a20*b01 + a21*b11 + a22*b21 a20*b02 + a21*b12 + a22*b22]
以下是用js做了一个矩阵点积的计算:
矩阵点积:计算行和列之间的乘积之和,也叫矩阵乘积
第一个矩阵的列数必须等于第二个矩阵的行数。如果第一个矩阵的维度是(m×n),则需要第二个矩阵的维度必须为(n×x),得到的结果矩阵的维度为(m×x)。
js代码:
const a = [ // 3 * 2的矩阵 3行2列 [1,2], [3,4], [5,6] ] const b = [ // 2 * 1 的矩阵 2行1列 [2], [4] ] // a和b矩阵满足a的列数=b的行数 可以做矩阵点积计算 function dianJi(a, b) { const width = a.length; const height = b.length; const result = []; for(let x = 0; x < width; x++) { // 遍历a的行数 const row = []; for(let y = 0; y < b[0].length; y++) { // 遍历b的列数 let sum = 0; for(let i = 0; i < a[0].length; i++) { // 遍历a的列数 sum += a[x][i] * b[i][y]; } row[y] = sum; } result[x] = row; } return result; } const r = dianJi(a, b); // 生成3 * 1的矩阵 console.log(r, '3*1');
const a2 = [ [1,2,3], [4,5,6], [7,8,10], [11,12,13] ] const b2 = [ [2,7], [1,2], [3,6] ] const r2 = dianJi(a2, b2); // 生成3 * 1的矩阵 console.log(r2, '4*2');
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2022-01-08 electron右键菜单、托盘、通知、应用菜单、文件菜单浏览、确认对话框