Matlab Mesh函数绘图失败求助:函数网格图无法生成排查
MATLAB网格图代码问题排查与修正
核心问题点:
- 符号变量冗余:代码开头的
syms x y完全多余,会与后续meshgrid生成的数值矩阵冲突,直接删除即可。 - 网格生成错误:
meshgrid(0:0.-1:1)是无效语法,步长部分的.位置错误,导致生成空矩阵。应改为0:0.1:1(生成0到1、步长0.1的网格点)。 - 矩阵运算符号错误:
- 所有元素级幂运算需用
.^替代^,^是矩阵幂运算,仅适用于方阵,而meshgrid生成的是矩形矩阵,会触发报错。 - 分式运算顺序错误:
c和d中的除法与乘法顺序不符合数学表达式逻辑,需添加括号明确运算优先级,确保是分子除以整个分母项。
- 所有元素级幂运算需用
- 元素级乘法遗漏:部分项的乘法需用
.*替代*,保证矩阵元素逐个运算。
修正后的完整代码:
% 生成x-y网格数据 [x,y] = meshgrid(0:0.1:1); % 计算各阶系数(修正运算符号与优先级) a = 1 - (3/2)*exp(-x/sqrt(2)); b = exp(-x/sqrt(2)) ./ ((2 + exp(-x/sqrt(2))).^2); c = (exp(-x/sqrt(2)) .* (exp(-x/sqrt(2)) - 2)) ./ (4 * ((2 + exp(-x/sqrt(2))).^3)); d = (exp(-x/sqrt(2)) .* ((exp(-x/sqrt(2))).^2 - 8*exp(-x/sqrt(2)) + 4)) ./ (24 * ((2 + exp(-x/sqrt(2))).^4)); % 计算函数值z z = a + y.*b + c.*y.^2 + d.*y.^3; % 绘制网格图并添加标注 mesh(x,y,z); xlabel('x'); ylabel('y'); zlabel('z'); title('函数网格图');
运行上述代码即可正常生成网格图。
内容的提问来源于stack exchange,提问作者Batool Ragayah
相关产品推荐
相关产品推荐

