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

Matlab向量化实现矩阵双向量乘求和时报矩阵维度不匹配如何解决

错误原因

  • MATLAB的二维矩阵索引规则:使用两个同尺寸矩阵M、N索引矩阵T时,T(M,N)会返回维度为size(M,1)*size(M,2) × size(N,1)*size(N,2)的笛卡尔积索引结果,而非你预期的逐位置取T(M(i,j), N(i,j))的同尺寸矩阵,因此出现维度不匹配报错。

修正方案

方案1:修正原有meshgrid写法

通过sub2ind函数将行列下标转换为线性索引,实现逐位置对应取值,符合你的原有逻辑:

T = eye(3);
vec_1 = [4,5,6];
vec_2 = [7,8,9];

% 用sub2ind转线性索引实现逐元素对应取值
f = @(m,n) T(sub2ind(size(T), m, n)) .* vec_1(m) .* vec_2(n);

[M, N] = meshgrid(1:3,1:3);
tot = sum(f(M,N),'all');

方案2:最优矩阵乘法写法(性能更高)

你的计算逻辑本质是二次型运算,直接用矩阵乘法一行即可实现,在大维度矩阵场景下运算效率远高于基于meshgrid的实现:

T = eye(3);
vec_1 = [4,5,6];
vec_2 = [7,8,9];

tot = vec_1 * T * vec_2';

两种方案的运行结果都和嵌套for循环的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:03