代码出现“DimensionMismatch: dimensions must match: ...”问题怎么处理?
技术分享
发布于 2025-10-16 19:28:13
查看 6过去229天
问题现象
运行以下代码,会显示报错
a = [1;2;3;;]
b = [7 8 9;1 2 3;4 5 6]
c = a + b;
报错信息为
DimensionMismatch: dimensions must match: a has dims (Base.OneTo(3), Base.OneTo(1)), b has dims (Base.OneTo(3), Base.OneTo(3)), mismatch at 2
问题原因
这是因为加号两侧的变量矩阵尺寸不一致,其中矩阵a为3行1列,矩阵b为3行3列,在进行加法运算时要求矩阵的维度与尺寸必须一致。
解决方法
基于Julia语言的广播机制,使用“.+”替换“+”即可,修改代码如下:
a = [1;2;3;;]
b = [7 8 9;1 2 3;4 5 6]
c = a .+ b;
返回结果为:
3×3 Matrix{Int64}:
8 9 10
3 4 5
7 8 9
广播机制:将数组参数中低维度的参数扩展,使得其与其他维度匹配,且不会使用额外的内存,并将所给的函数逐元素地应用。
所属专栏:Julia语言
产品信息:Syslab科学计算环境