You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何将第一个矩阵的每一行与第二个矩阵的每一行相减

矩阵两两行相减实现方案

原理:利用张量广播机制实现向量化运算,无需写嵌套循环,运算效率远高于逐行遍历。51行的两个矩阵两两配对共得到51×51=2601组运算结果,最终拼接为目标维度的矩阵。

Python + NumPy 实现

import numpy as np

# 示例生成测试矩阵,实际使用时替换为自己的A、B矩阵即可
A = np.random.rand(51, 5100)
B = np.random.rand(51, 5100)

# 维度扩展后广播相减,再拉平前两个维度
C = (A[:, np.newaxis, :] - B[np.newaxis, :, :]).reshape(-1, 5100)

# 维度校验
print(C.shape) # 输出 (2601, 5100)

默认行顺序:A的第0行依次减B的0~50行,再到A的第1行依次减B的所有行,以此类推。

PyTorch 实现

逻辑和NumPy完全一致,适配张量运算场景:

import torch

A = torch.randn(51, 5100)
B = torch.randn(51, 5100)

C = (A[:, None, :] - B[None, :, :]).flatten(0, 1)
print(C.shape) # 输出 torch.Size([2601, 5100])

MATLAB 实现

% 测试矩阵生成,实际使用替换为自有矩阵
A = rand(51, 5100);
B = rand(51, 5100);

C = reshape(permute(A, [1,3,2]) - permute(B, [3,1,2]), [], 5100);
size(C) % 输出 2601        5100
  • 所有实现均为向量化运算,当前数据规模下运算耗时可忽略,内存占用仅10MB左右(单精度浮点)
  • 若需要调整C的行排列顺序,仅需修改相减前的维度排列参数即可

内容的提问来源于stack exchange,提问作者Pny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:04