矩阵乘法-简记

人工智能: 矩阵乘法从基础到实战 通过这些内容,我们可以看到矩阵乘法是线性代数中一个非常基础但重要的运算,在实际应用中有着广泛的用途。掌握矩阵乘法的规则和性质,对理解更复杂的数学概念和解决实际问题都很有帮助。通过这个案例,我们可以看到矩阵乘法在推荐系统中的重要应用,以及如何处理大规模稀疏数据的挑战。特别是在处理用户-物品交互数据时,矩阵运算提供了高效且可扩展的解决方案。在处理大规模医疗图像时,特别要注意数值精度和性能优化。在实际应用中,应根据具体问题选择合适的计算方法和优化策略。15. 矩阵乘法在图像处理中的实际应用。 阅读详情

1.快速入门

洛谷B2105 矩阵乘法,看到题目,题目中已经告诉了我们矩阵乘法的基本操作,按照题目模拟即可

给出我的代码:

#include <bits/stdc++.h>
using namespace std;
int x[105][105];
int y[105][105];
int main(){
    int n,m,k;
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> x[i][j];
    for (int i = 1; i <= m; i++) for (int j = 1; j <= k; j++) cin >> y[i][j];
    for (int i = 1; i <= n; i++){
        for (int j = 1; j<= k; j++){
            int z = 0;
            for (int k = 1; k <= m; k++){//套公式
                z += x[i][k]*y[k][j];
            }
            cout << z << " ";
        }
        cout << "\n";
    }
    
    return 0;
}

z我咋没用数组存

2.矩阵快速幂

P3390 【模板】矩阵快速幂

还记得那个矩阵乘法的模板吗?只需将它套入快速幂的模板里即可。

但是这边细节比较多,本蒟蒻也不太会用类,给出一个比较浅显的代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int The_Boeing_757_is_the_best_aircraft_model_in_the_world = 1e9+7;
int n;
int x[104][104];
int a[104][104];
int y[104][104];
int z[104][104];
void m(){
    memset(z,0,sizeof(z));
    for (int i = 1; i <= n; i++){
        for (int j = 1; j<= n; j++){
            for (int k = 1; k <= n; k++){//套公式
                (z[i][j] += x[i][k]*y[k][j]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
            }
        }
    }
}
void boeing(){//转换函数
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++) x[i][j] = z[i][j];
    }
}
void airbus(){//转换函数
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++) y[i][j] = z[i][j];
    }
}
void fast(int k){//统一把这一次的乘积放x,方便之后处理
    if (k == 0){
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= n; j++) x[i][j] = 0;
            x[i][i] = 1;
        }
        return ;
    }
    if (k == 1){
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= n; j++) x[i][j] = a[i][j];
        }
        return ;
    }
    fast(k/2);
    for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) y[i][j] = x[i][j];
    m();
    airbus();
    fast(k%2);
    m();
    boeing();
}
signed main(){
    int k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++){
        for (int j = 1; j <= n; j++){
            cin >> a[i][j];
            a[i][j] %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
        }
    }
    fast(k);
    for (int i = 1; i <= n; i++){ for (int j = 1; j <= n; j++) {cout << x[i][j] << " ";} cout << "\n";}
    return 0;
}

不要管我的变量名和函数名啊

总体而言,在细节处理时:我将每一次的结果存在x里,这样方便统计。

举个例子:

我们在计算矩阵的k次方。

先调用函数算出\lfloork/2\rfloor次方的矩阵,存在x里。

复制一份,放到y里

用m函数计算出x*y的值——也就是矩阵的\lfloork/2\rfloor*\lfloork/2\rfloor次方,存放到z里

当然如果k是奇数,那么还要再乘一遍

统一再乘一遍

那么将z中的转移到y

然后调用fast(k%2)

再(用m函数)乘

再将z中的转移到x里存放

感觉总体还是比较简单的,至少跟用类的对比

这样的模板就写好了,思路不难,就是细节有点多

3.简单的优化

那么好问题,我们学了矩阵乘法该怎么用呢?

请看入门题目——P1962 斐波那契数列 - 洛谷

对于60%的数据用普通DP即可,以下是转移方程:

dp[i] = dp[i-1]+dp[i-2]

只看60%的数据,实现就是个普及-,可是当n<2^{63}时,O(n)的时间复杂度不再能支撑

此时就要用到矩阵乘法优化了!

如何构建?
1.写出递推:
此题为:f[n] = f[n-1]+f[n-2]
2.构建矩阵
先放dp[i]、再看dp[i]要哪些转移过来、再看dp[i]要哪些转移过来的要要哪些转移过来...
此题为:
dp[i]
dp[i-1]
3.考虑次方矩阵
转移为dp[i]从以的dp[i-1]为第一项的转来
为了方便描述,以的dp[i]为第一项称为A(矩阵),以的dp[i-1]为第一项称为B(矩阵)
对于次方矩阵C(叫做C)第i行代表A[i] = ∑[在列j] B[j] * C[i][j]
靠递推转移方程进行构建C,以及对于入门\正常的矩阵乘法优化A与B一般是一列,所以在我的表达式里A[i][1]=>(写为)A[i],其他同理
此题为:
1 1(dp[i] = dp[i-1]*1+dp[i-2]*1)
1 0(dp[i-1] = dp[i-1]*1+dp[i-2]*0)

注意再乘 确定的前几项 即可:

代码是在模板上稍加修改的:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int The_Boeing_757_is_the_best_aircraft_model_in_the_world = 1e9+7;
int n;
int x[104][104];
int a[104][104];
int y[104][104];
int z[104][104];
void m(){
    memset(z,0,sizeof(z));
    for (int i = 1; i <= n; i++) for (int j = 1; j<= n; j++) for (int k = 1; k <= n; k++)(z[i][j] += x[i][k]*y[k][j]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
}
void boeing(){ for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) x[i][j] = z[i][j];}
void airbus(){for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) y[i][j] = z[i][j];}
void fast(int k){//统一把这一次的乘积放x,方便之后处理
    if (k == 0){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){ x[i][j] = 0;}x[i][i] = 1;}
        return ;
    }
    if (k == 1){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++) x[i][j] = a[i][j];}
        return ;
    }
    fast(k/2);
    for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) y[i][j] = x[i][j];
    m();
    airbus();
    fast(k%2);
    m();
    boeing();
}
signed main(){
    int k;
    cin >> k;
    if (k < 2){ cout << 1;return 0;}
    n = 2;
    a[1][1] = 1;
    a[1][2] = 1;
    a[2][1] = 1;
    fast(k-2);//我们以第三项来举例:第三项只是*了一次就可以得到,所以是N减二
    memset(y,0,sizeof y);
    y[1][1] = 1;
    y[2][1] = 1;
    int ans = 0;
    for (int k = 1; k <= 2; k++) (ans += x[1][k]*y[k][1]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
    cout << ans;
    return 0;
}

4.习题

P1939 矩阵加速(数列) - 洛谷

P1349 广义斐波那契数列 - 洛谷

都是比较简单的思路,与P1962 斐波那契数列思路都差不多

以下是我的解题思路:

P1939:

状态:
dp[i]
dp[i-1]
dp[i-2]
想求dp[i]就要从第一位为dp[i-1]更新来
记住!a*b是用a的一行*b的一列
轻松得出:
1(让第一位0 +dp[i-1]) 0 1(让第一位0+dp[i-1] +dp[i-3])
1(让第2位0 +dp[i-1]) 0 0
0 1(让第3位0 +dp[i-2]) 0

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int The_Boeing_757_is_the_best_aircraft_model_in_the_world = 1e9+7;
int n;
int x[104][104];
int a[104][104];
int y[104][104];
int z[104][104];
void m(){
    memset(z,0,sizeof(z));
    for (int i = 1; i <= n; i++) for (int j = 1; j<= n; j++) for (int k = 1; k <= n; k++)(z[i][j] += x[i][k]*y[k][j]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
}
void boeing(){ for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) x[i][j] = z[i][j];}
void airbus(){for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) y[i][j] = z[i][j];}
void fast(int k){//统一把这一次的乘积放x,方便之后处理
    if (k == 0){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){ x[i][j] = 0;}x[i][i] = 1;}
        return ;
    }
    if (k == 1){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++) x[i][j] = a[i][j];}
        return ;
    }
    fast(k/2);
    for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) y[i][j] = x[i][j];
    m();
    airbus();
    fast(k%2);
    m();
    boeing();
}
signed main(){
    int t;
    cin >> t;
    while (t--){
        int k;
        cin >> k;
        if (k <= 3){ cout << "1\n";continue;}
        n = 3;
        a[1][1] = 1;
        a[1][3] = 1;
        a[2][1] = 1;
        a[3][2] = 1;
        fast(k-3);//注意减3
        memset(y,0,sizeof y);
        y[1][1] = 1;
        y[2][1] = 1;
        y[3][1] = 1;
        int ans = 0;
        for (int k = 1; k <= 3; k++) (ans += x[1][k]*y[k][1]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
        cout << ans << "\n";
    }
    return 0;
}

P1349:

其实就是把系数改一下就行:

#include <bits/stdc++.h>
using namespace std;
#define int long long
int The_Boeing_757_is_the_best_aircraft_model_in_the_world;
int n;
int x[104][104];
int a[104][104];
int y[104][104];
int z[104][104];
int k,p,q,a1,a2;
void m(){
    memset(z,0,sizeof(z));
    for (int i = 1; i <= n; i++) for (int j = 1; j<= n; j++) for (int k = 1; k <= n; k++)(z[i][j] += x[i][k]*y[k][j]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
}
void boeing(){ for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) x[i][j] = z[i][j];}
void airbus(){for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) y[i][j] = z[i][j];}
void fast(int k){//统一把这一次的乘积放x,方便之后处理
    if (k == 0){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){ x[i][j] = 0;}x[i][i] = 1;}
        return ;
    }
    if (k == 1){
        for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++) x[i][j] = a[i][j];}
        return ;
    }
    fast(k/2);
    for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) y[i][j] = x[i][j];
    m();
    airbus();
    fast(k%2);
    m();
    boeing();
}
signed main(){
    cin >> p >> q >> a1 >> a2 >> k >> The_Boeing_757_is_the_best_aircraft_model_in_the_world;
    if (k == 1) {cout << a1; return 0;}
    if (k == 2) {cout << a2; return 0;}
    n = 2;
    a[1][1] = p;
    a[1][2] = q;
    a[2][1] = 1;
    fast(k-2);//和那个斐波那契数列同理
    memset(y,0,sizeof y);
    y[1][1] = a2;//别搞反了
    y[2][1] = a1;
    int ans = 0;
    for (int k = 1; k <= 2; k++) (ans += x[1][k]*y[k][1]) %= The_Boeing_757_is_the_best_aircraft_model_in_the_world;
    cout << ans;
    return 0;
}

希望大家能把这5倍经验接好了:

广义斐波那契数列

斐波那契数列

矩阵加速(数列)

【模板】矩阵快速幂

矩阵乘法

OK啊今天就到这里了,希望大家已经大致的了解了矩阵乘法的作用!

带你深入理解矩阵乘法 为了不浪费大家宝贵的时间,开头我先简要说明一下这篇博文对哪些读者可能会有帮助 1、你是正在学习矩阵的乘法运算,觉得矩阵的乘法掌握起来很困难 2、你已经学会了矩阵乘法,但如果你在计算矩阵乘法时还在使用“一行乘一列得一数”的方法,那我强烈建议你看看后面的内容。 因为,我将带你更加深刻地理解矩阵,与之而来是对矩阵乘法的全新计算方式。这不仅让你在计算矩阵乘法时更快,而且更省心。 “矩阵就是数... 阅读详情

相关推荐

矩阵系列:矩阵乘法

上一篇说到一个基本的小知识点浮点到定点的转换,这一篇来说说矩阵乘法。矩阵乘法和下一篇要说的矩阵LU分解是矩阵求逆的重要组成部分,所以就算大家不需要做矩阵求逆,对其先有个整体的认识也是好的。(矩阵求逆的整体框图还是很好理解的 ,甚至你只要瞟一眼图就好)。 1矩阵求逆的整体框图 矩阵求逆的步骤如下: 1.原始矩阵A通过LU分解为上三角矩阵L与单位下三角矩阵U。 2.分别通过三角矩阵的求逆运算得到L逆和U逆。 3.最后通过矩阵乘法得到A逆。 显而易见,矩阵求逆由如下三个部分组成: 1.LU矩阵分解 2.三角矩阵

u012938458的博客 4542

矩阵的乘法

1. 有两个矩阵:A和B(矩阵实际上就是二维数组) A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量 运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来 矩阵乘法的结果为行与列的关系为:行数量为A的行数量, 列数量为B的列数量 2. 因为每一次都是A的行与B的列,所以最外层的两层循环可以使用A的行的数量的变化,B的列的数量进行变化 而...

二哈 59万+

Claude Code长期记忆:优雅的上下文管理

ClaudeCode的上下文管理系统采用三层架构设计,通过智能压缩和优化策略在记忆容量与性能间取得平衡。系统包含短期记忆(高速工作区)、中期记忆(智能蒸馏器)和长期记忆(持久化知识库)。当Token使用率达到92%阈值时启动wU2压缩器,采用8段式结构化摘要保留关键信息,并配合智能文件恢复和渐进式预警机制。该系统通过分层处理、优雅降级和透明化交互,为AI应用提供了高效可靠的上下文管理方案,展现了在有限资源下实现智能记忆的艺术。

m0_53117338的博客 3820

矩阵的基本运算

矩阵的运算举例一、矩阵加法二、矩阵减法三、矩阵乘法四、矩阵转置五、逆矩阵六、对称矩阵七、矩阵性质总结 举例 a=[abcd](1) a= \left[ \begin{matrix} a & b \\ c & d \\ \end{matrix} \right] \tag{1} a=[ac​bd​](1) b=[a1a2b1b2](2) b= \lef

有的话没说出来之前,你是他的主人,一旦说出来你就成了他的奴隶||想要干好事,别太把自己当人,别把别人太不当人||认识这个人就是开了一扇窗户,就能看到不一样的东西,听到不一样的声音,能让你思考、觉悟,这已经够了 29万+

汽车电子电气架构演进:从分布式ECU到域集中与中央计算

汽车电子电气架构(EEA)是整车电子系统的顶层设计框架,定义了计算、通信、供电等核心要素的组织方式。其演进遵循从分布式到集中式的技术路径,旨在解决传统架构下ECU数量膨胀带来的成本、复杂度和协同难题。通过域控制器(DCU)整合功能域,以及向中央计算+区域控制架构发展,实现了硬件资源池化、软硬件解耦与高速通信。这一变革的核心技术价值在于提升算力利用率、简化线束布局、支持软件定义汽车(SDV)与持续OTA升级。在智能电动汽车时代,新架构为智能座舱、自动驾驶等复杂应用提供了可扩展的平台基础,推动了汽车产业从硬件导

weixin_30326741的博客 387

爬虫君子协议-robots.txt协议

文章目录一.定义二.用法 一.定义 robots协议是一种约定俗称的爬虫协议,由网站主人规定了该网站的哪些内容可以爬取,哪些内容不可以爬取,擅自爬取可能承担相关法律责任。之所以称之为君子协议,是因为防君子不防小人,该协议并没有用技术手段实现反爬,只是一个申明。 在网站根目录后输入/robots.txt后即可查看该网站的君子协议 例如访问https://www.douban.com/robots.txt可查看豆瓣网站的君子协议 查看结果如下 User-agent: * Disallow: /subject_

Henrik-Yao的博客 7618

线性代数--矩阵基本计算(加减乘法)

对线性代数的矩阵的运算有详细的总结,来源于B站宋浩的视频所作的学习笔记。

qq_51216031的博客 10万+

Mamba-UNet:用于医学图像分割的类似UNet的纯视觉Mamba网络

所提出的Mamba-UNet的架构如图2所示,其灵感来源于UNet [24] 和 Swin-UNet [3]。首先将大小为 H × W × 1 的2D灰度图像分割成类似于ViT和VMamba的块 [5,16],然后转换为维度为 H/4 × W/4 × 16 的1D序列。一个初始的线性嵌入层将特征维度调整为任意大小C。这些块令牌随后通过多个VSS块和块合并层进行处理,以创建分层特征。块合并层负责下采样和维度增加,而VSS块则专注于学习特征表示。

AI浩 7551

【详解】矩阵乘法

矩阵乘法 矩阵 一个 m×nm\times nm×n 的矩阵就是

_BOSS_的博客 5万+

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

学无止境、积少成多、厚积薄发 2171

手把手教你学simulink(41.4)--逆变器电场景示例:基于Simulink的主从控制的多逆变器协同控制(Multi-Inverter Coordinated Control)

需求分析在现代电力系统中,分布式发电和储能系统的广泛应用使得多个逆变器并联运行成为常见的应用场景。为了确保多个逆变器之间的协同工作,实现系统的稳定性和高效性,通常采用主从控制(Master-Slave Control)策略。主从控制通过一个主控制器(Master)来协调多个从控制器(Slave),确保所有逆变器的输出电压、频率和功率分配符合预期目标。本项目将基于Simulink平台,开发一个多逆变器协同控制系统,采用主从控制策略,实现对多个逆变器的精确控制和优化。

MHD0815的博客 307

numpy矩阵乘法_NumPy矩阵乘法

numpy 矩阵乘法NumPy matrix multiplication can be done by the following three methods. NumPy矩阵乘法可以通过以下三种方法完成。 multiply(): element-wise matrix multiplication. multiple():逐元素矩阵乘法。 matmul(): matrix product o...

从零开始的教程世界 3万+

扩展卡尔曼滤波 (EKF, Extended Kalman Filter) 算法详解及案例分析

扩展卡尔曼滤波是一种用于估计非线性动态系统状态的递归算法。其目标是通过结合非线性系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2388

矩阵乘法总结

矩阵是数的排列 矩阵 (这矩阵有2行和3列) 把矩阵与一个数相乘是容易的: 计算是这样的: 2×4=8 2×0=0 2×1=2 2×-9=-18 我们叫这个数 ("2")为标量,所以这乘法被称为"标量乘法". 矩阵与矩阵相乘 但若要把矩阵与矩阵相乘,我们要计算行与列的"点积"……这是什么意思?我们来看个例子: 求第一行和第一列的答案: "点积...

BigZong 2万+

Debezium报错处理系列之二十一:Unable to connect: Communications link failure.The driver has not received any

Debezium报错系列之二十一:Unable to connect: Communications link failure.The driver has not received any。

zhengzaifeidelushang的博客 547

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

矩阵乘法 ‌‍‎‏

计算两个矩阵的乘法: 设有矩阵\(A\)为\(n×m\)阶矩阵,矩阵\(B\)为\(m×k\)阶矩阵,二者相乘得到的矩阵\(C\)是\(n×k\)阶矩阵。 对于矩阵\(C\)中的元素\(C[i][j]\)(其中\(i\)表示行序号,\(j\)表示列序号),其计算公式为: \[C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + ... + A[i][m - 1]×B[m - 1][j]\]。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7824

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python矩阵乘法_Python矩阵乘法

python矩阵乘法Here you will get program for python matrix multiplication. 在这里,您将获得用于python矩阵乘法的程序。 If we want to multiple two matrices then it should satisfy one condition. We need to check this conditi...

culing2941的博客 3408

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

矩阵乘法(矩阵乘矩阵)

首先理了解矩阵是什么:矩阵是一个按照长方阵列排列的复数或实数集合。(相信大家都懂)关于矩阵的基本概念:1.方阵:n 阶方阵 (正方形嘛)2.同型矩阵:两个矩阵,行数与列数对应相同,称为同型矩阵。

Rudy1124的博客 2万+

Strassen矩阵乘法

设Aaij​Bbij​是n×n的方阵,则对ij12...n,定义A和B的乘积矩阵C中元素cij​如下cij​k1∑n​aik​⋅bkj​按照定义来计算,我们需要计算n^2个矩阵元素,每个元素是n个值的和(从k=1到n),也就是说,要每计算一个C矩阵的元素,就要进行n次乘法和n-1次加法。显然依照定义来计算的时间复杂度将达到O(n^3)。

wulisheng11的博客 1680

矩阵乘法

矩阵乘法(Matrix multiplication)最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。 定义 设A为  的矩阵,B为  的矩阵,那么称  的...

顺其自然~专栏 1万+

python矩阵乘法全面解读,python矩阵乘法常用代码

当然,我们也可以将矩阵A设置为: 在初始化之后,我们就可以计算出A*b了,这里的a和b分别代表的是A中的两个元素,即: 在上面的例子中,我们输入的数值为: 初始化为0后,矩阵A只有三个元素了: 此时,矩阵A就变成了一个完全的矩阵。在上一篇文章中,我们对矩阵乘法进行了初步学习,知道了求矩阵乘法的基本步骤: 1、初始化为0 2、令A=a*b 3、将a和b带入其中,并令a*b=0 4、令b=0,则A=(a*b)*(a-1) 10、令F=0,则A→(F-0)*F 11、若对a和b进行赋值也是求矩阵乘法。

花生日记 4931

矩阵分块乘法

矩阵乘法 普通矩阵乘法(ijk) void matrix_multply(float *a, float *b, float *c, int n) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { float sum = c[i*N + j] ; for(int k = 0; k < n; k++)

qq_41967508的博客 4244

浅谈矩阵乘法

N×MN \times MN×M的矩阵可以和M×KM\times KM×K的矩阵进行矩阵乘法。即:第一个矩阵的列数要和第二个矩阵的行数相等。运算得到的答案矩阵大小为N×KN \times KN×K。

BasketballChick的博客 1567

Pytorch矩阵乘法总结

pytorch一共有5种乘法 *乘,element-wise乘法,支持broadcast操作 torch.mul(),和*乘完全一样 torch.mm(),矩阵叉乘,即对应元素相乘相加,不支持broadcast操作 torch.bmm(),三维矩阵乘法,一般用于mini-batch训练中 torch.matmul(),叉乘,支持broadcast操作 先定义下面的tensor(本文不展示print结果): import torch tensorA_2x3 = torch.tensor( [[1

weixin_42065178的博客 1万+

Strassen矩阵乘法——C++

基于分治法的矩阵快速乘法---C++实现

stu_kk的博客 2097

c++实现矩阵乘法&关系矩阵乘法

C++实现矩阵乘法和离散数学关系矩阵乘法

initial_atom的博客 6765
上一篇: 全源最短路(Johnson)
下一篇: 题解:P15571 [USACO26FEB] Strange Function B
B757-300
博客等级 码龄4年 259粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值