【线性代数】理解矩阵乘法的意义(点乘)
刚接触线性代数时,很不理解矩阵乘法的计算规则,为什么规则定义的看起来那么有规律却又莫名其妙,现在参考了一些资料,回过头重新总结下个人对矩阵乘法的理解(严格来说是点乘)。
理解矩阵和矩阵的乘法,可以先理解矩阵和向量的乘法,因为矩阵可以看成是不同列向量的集合。
下面从基变换视角理解矩阵的乘法原理,基变换视角是将矩阵的每个列向量看成是新基坐标系中的一个基坐标。
先考虑一个规则的 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.确保脚本的可执行性和正确性 二、后续 背景 之前…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
