Matlab绘图时持续出现‘矩阵维度必须一致’错误求助
解决Matlab中“矩阵维度必须一致”错误及M-sigma函数绘制问题
错误原因分析
- sigma包含0值:原代码中
sigma = 0:0.001:4包含起始值0,导致后续运算中出现除以0的情况,生成的数组中混入Inf/NaN,这类异常值会引发Matlab抛出“矩阵维度必须一致”的隐性错误(实际是异常值破坏了元素级运算的一致性)。 - 代码中用方括号
[]包裹两个exp的差值,虽语法合法,但属于不必要的数组创建操作,易引发混淆。
修正后的代码
beta = 1; alpha = -1 ; u = 0 ; % 从极小值起始,避免除以0的情况 sigma = 0.001: 0.001 : 4; M = (alpha + beta)./2 - ((beta - u)./2) .* erf((beta - u)./(sqrt(2).*sigma)) ... + ((alpha - u)./2).* erf((alpha - u)./(sqrt(2).*sigma)) ... -(sigma ./(sqrt(2*pi))) .* (exp( -((beta - u)./(sqrt(2).*sigma)).^2) ... - exp( -((alpha - u)./(sqrt(2).*sigma)).^2 ) ) ; plot(sigma,M) xlabel('sigma') ylabel('M') title('M 随 sigma 变化曲线')
关键修正点
- 移除sigma中的0值,改用
0.001作为起始值,彻底消除除以0引发的异常值,保证元素级运算的维度一致性。 - 将包裹
exp差值的方括号[]替换为圆括号(),简化表达式逻辑,避免不必要的数组构造操作。
运行修正后的代码即可正常绘制M关于sigma的函数曲线。
内容的提问来源于stack exchange,提问作者Blame-it-on-me
相关产品推荐
相关产品推荐

