【线性代数】理解矩阵乘法的意义(点乘)
刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。
理解矩阵和矩阵的乘法,可以先理解矩阵和向量的乘法,因为矩阵可以看成是不同列向量的集合。
下面从基变换视角理解矩阵的乘法原理,基变换视角是将矩阵的每个列向量看成是新基坐标系中的一个基坐标。
先考虑一个规则的 2x2 的矩阵和一个 2x1 的向量之间的乘法,例如:
[ 1 − 2 1 2 ] [ 1 1 ] = [ − 1 3 ] \begin{bmatrix} 1&-2 \\ 1&2 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} = \begin{bmatrix} -1\\ 3 \end{bmatrix} [11−22][11]=[−13]
后面为了方便描述,分别用A表示矩阵,a表示等号左边的向量(1, 1),b表示等号右边的向量(-1, 3)。
上面这个乘法过程可以理解为:把矩阵A看成一个新的基坐标系,(1, 1) 和 (-2, 2) 分别是新基坐标系中的x, y轴。b(1, 1)可以看成是这个新基坐标系视角下坐标表示的一个向量,左边乘上一个矩阵A,相当于求出在以矩阵A为新的基坐标系的视角下,向量(1, 1)在标准的笛卡尔坐标系中的坐标表示。
可视化上面这个计算:
import numpy as np
import matplotlib.pyplot as plt# 定义矩阵和向量
A = np.array([[1, -2], [1, 2]])
b = np.array([1, 1])# 计算变换后的向量
b_transformed = A @ b# 定义标准基
origin = np.array([[0, 0], [0, 0]])# 绘制
fig, ax = plt.subplots()# 绘制原始向量
ax.quiver(*origin, b[0], b[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original Vector (1,1)')# 绘制新基
ax.quiver(*origin, A[0, 0], A[1, 0], angles='xy', scale_units='xy', scale=1, color='red', label='New x-axis (1,1)')
ax.quiver(*origin, A[0, 1], A[1, 1], angles='xy', scale_units='xy', scale=1, color='green', label='New y-axis (-2,2)')# 绘制变换后的向量
ax.quiver(*origin, b_transformed[0], b_transformed[1], angles='xy', scale_units='xy', scale=1, color='purple', label='Transformed Vector (-1,3)')# 设置图形属性
ax.set_xlim(-3, 3)
ax.set_ylim(0, 3) # 只显示x轴的上半部分
ax.set_aspect('equal')
plt.grid()# 调整图例位置
plt.legend(loc='upper left', bbox_to_anchor=(0.6, 1), fontsize='small')
plt.title('Vector Transformation and Basis Visualization')
plt.xlabel('X')
plt.ylabel('Y')plt.show()
红色和绿色的向量构成了一个新的坐标基底,从这个基底的视角来看,棕色的向量还是(1, 1),但是这个新基坐标系下的向量(1, 1)在原笛卡尔坐标系下的表示是(-1, 3)。
所以基变换角度来看矩阵乘向量 A ⋅ b A \cdot b A⋅b,可以理解成以矩阵A为新的基底,该基底下的向量b,在笛卡尔坐标系下的真实位置。
由此理解矩阵乘法的计算规则,为什么就是像下面这样,前面一个矩阵的第 i 行 x 后一个矩阵的第 j 列,结果为新的矩阵的第 ij 个元素:
[ 1 − 2 1 2 ] [ 1 1 ] = [ − 1 × 1 + ( − 2 ) × 1 1 × 1 + 2 × 1 ] = [ − 1 3 ] \begin{bmatrix} 1&-2 \\ 1&2 \end{bmatrix} \begin{bmatrix} 1\\ 1 \end{bmatrix} = \begin{bmatrix} -1\times1+(-2)\times1\\ 1\times1+2\times1 \end{bmatrix}= \begin{bmatrix} -1\\ 3 \end{bmatrix} [11−22][11]=[−1×1+(−2)×11×1+2×1]=[−13]
因为左边矩阵不同的列向量代表新基坐标系中不同维度下的基底,后面矩阵列向量中的不同坐标分别表示新的基坐标系中不同维度的坐标,而新的基坐标系中,不同维度的基坐标轴的坐标表示,又可以看成是相对于原笛卡尔坐标系的投影,比如新的x轴(1, 1),表示这个轴在笛卡尔坐标系中的x, y轴上的投影分别都是1,新的x轴中的一个单位长度,等价于原笛卡尔坐标系中x, y轴各自一个单位长度。
因此矩阵乘法之所以规定行乘列的值作为计算的结果,本质上是把新基坐标系下,一个向量所有维度的坐标,在原笛卡尔坐标系下按照不同维度(前面矩阵的行)进行了一个汇总求和。
所以也能理解为什么规定矩阵乘法,要求必须前面一个矩阵的列数等于后一个矩阵的行数,因为前面矩阵的列数其实就是新的基坐标系的维度,后面矩阵的行数,其实就是一个向量在这个新基坐标系中各维度下的坐标表示,二者维度不同,也就没有汇总的必要和意义。
推广到高维的不规则的矩阵,比如一个3x2的矩阵乘上一个2x1的向量,新的基坐标系还是只有两个维度,只不过每个维度会投影到一个三维的笛卡尔坐标系(因为矩阵的列向量是用3个数表示,说明在笛卡尔坐标系中有3个维度的投影)。后面这个2x1的向量可以看成是新的基坐标系下的向量表示,最终的计算还是将这个向量分别在笛卡尔坐标系的三个维度上汇总求和。
以下面这个为例:
[ 0 1 1 0 1 1 ] ⋅ [ 1 1 ] = [ 1 1 2 ] \begin{bmatrix} 0 & 1\\ 1 & 0\\ 1 & 1 \end{bmatrix} \cdot \begin{bmatrix} 1\\ 1 \end{bmatrix}= \begin{bmatrix} 1\\ 1\\ 2 \end{bmatrix} 011101 ⋅[11]= 112
至于推广到更多行或列的矩阵乘法,无非增加行数是增加了新的基坐标在标准笛卡尔坐标系下的分解维度,增加列数是增加了新坐标系的基底数量,原理都还是一样的。
至于矩阵乘矩阵,可以把后一个矩阵看成是多个列向量的集合,用矩阵乘向量的视角去理解。
相关文章:

【线性代数】理解矩阵乘法的意义(点乘)
刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。 理解矩阵和矩阵的乘法&#x…...
游戏开发技能系统常用概念
一个角色同一时间可能存在多个Skill,一个当前播放的主动技能,还有好几个不在播放中,但是也没有结束的。 技能事件: 实现具体的技能功能,技能动作的执行都是通过触发事件来触发的,比如(时间帧&am…...

【案例80】麒麟操作系统无法使用Uclient访问NC65
问题现象 麒麟操作系统,安装Uclient,添加应用后无法看到登录界面,一直在转圈。 问题分析 进入到Uclient的工作目录 发现在工作目录下,无相关app.log生成。 查看Uclient的main.log发现,有大量的报错与Uclient下的sha…...

【AIGC-ChatGPT进阶副业提示词】育儿锦囊:化解日常育儿难题的实用指南
引言 在育儿的道路上,每位父母都会遇到各种各样的挑战和困惑。从孩子的饮食习惯到沟通交流,从作息规律到行为管理,这些看似平常的问题往往会让父母感到焦虑和无助。本文将通过实际案例分析和解决方案,为父母们提供一个实用的育儿…...
使用Docker部署一个Node.js项目
本文档将介绍如何使用Docker来部署一个Node.js项目。Docker是一种开源平台,可以自动化应用程序的部署、扩展和管理。通过Docker,我们可以将应用程序及其依赖项打包到一个容器中,从而确保在不同环境中运行的一致性。接下来,我们将逐…...
数据科学与SQL:如何利用本福特法则识别财务数据造假?
目录 0 本福特法则介绍 1 数据准备 2 问题分析 步骤1:提取首位数: 步骤2:计算首位数字的实际频率分布 <...
文心一言对接FreeSWITCH实现大模型呼叫中心
文心一言对接FreeSWITCH实现大模型呼叫中心 作者:开源大模型智能呼叫中心FreeIPCC,Github:https://github.com/lihaiya/freeipcc 随着人工智能技术的快速发展,特别是大规模语言模型(LLM)的应用࿰…...
LSTM实现天气模型训练与预测
要实现一个天气预测的模型,并确保该模型可以反复进行训练和更新,先设计: 设计方案 数据获取: 使用公开的天气数据API(例如OpenWeather API或其他类似的API)获取天气数据。确保数据以合适的格式(…...

TCL发布万象分区,再造Mini LED技术天花板
作者 |辰纹 来源 | 洞见新研社 现实世界中,光通过悬浮在大气中的冰晶折射,呈现出环形、弧形、柱形或亮点的扩散,从而产生光晕,雨后的彩虹是我们经常能看到的光晕现象。 然而,当光晕出现在电视中,那就不是…...

2024广东省职业技能大赛云计算——私有云(OpenStack)平台搭建
OpenStack搭建 前言 搭建采用双节点安装,即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本:CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…...

简单了解图注意力机制
简单了解图注意力机制 如果对传统的图匹配的聚合方式进行创新的话,也就是对h这一个节点的聚合方式进行创新。 h i ( l 1 ) Norm ( σ ( h i ( l ) α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l1)}\operatorname{Norm}\left(\sigm…...

UI Automator Viewer操作
版本:24.4.1 使用UI Automator Viewer报错如下: Error obtaining Ul hierarchy Reason: Error while obtaining Ul hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesnt exist!可以使用指令: 保存uix文件 adb sh…...

SpringBoot的创建方式
SpringBoot创建的五种方式 1.通过Springboot官网链接下载 注意SpringBoot项目的封装方式默认为Jar 需要查看一下,自己的Maven版本是否正确 创建成功 2.通过 aliyun官网链接下载 修改服务路径为阿里云链接 创建成功 3.通过Springboot官网下载 点击,拉到最…...
Vue3之性能优化
Vue3作为Vue框架的最新版本,在性能上进行了大量的优化,使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例,并结合具体代码和性能测试数据,展示Vue3在实际应用中的性能优势…...
RFdiffusion Sampler类 sample_step 方法解读
Sampler类的sample_step 方法的主要目的是根据扩散模型的预测生成在时间步 t-1 上的下一个三维结构、序列和其他相关特征。这是扩散采样过程的核心步骤之一。 源代码: def sample_step(self, *, t, x_t, seq_init, final_step):Generate the next pose that the model should…...

Flutter组件————FloatingActionButton
FloatingActionButton 是Flutter中的一个组件,通常用于显示一个圆形的按钮,它悬浮在内容之上,旨在吸引用户的注意力,并代表屏幕上的主要动作。这种按钮是Material Design的一部分,通常放置在页面的右下角,但…...

算法学习(十六)—— 综合练习
目录 1863. 找出所有子集的异或总和再求和 47. 全排列 Ⅱ 17. 电话号码的字母组合 22. 括号生成 77. 组合 494. 目标和 39. 组合总和 784. 字母大小写全排列 526. 优美的排列 51. N皇后 36. 有效的数独 37. 解数独 79. 单词搜索 1219. 黄金矿工 980. 不同路径 Ⅲ…...

kratos源码分析:熔断器
文章目录 为什么需要熔断Google sre弹性熔断算法kratos Breaker源码分析公共接口sre实现上报请求结果判定是否熔断 为什么需要熔断 一般来说,当服务器过载(overload)时,需要给client返回服务过载的报错 但是拒接请求也有成本&…...

CTF_1
CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…...

【系统】Mac crontab 无法退出编辑模式问题
【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因:2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...