上面代码出现 出错 Untitled6 (line 22) surf(x, y, z, 'EdgeColor', 'none')
时间: 2023-11-29 14:04:23 浏览: 43
这个错误可能是由于输入的 `x` 和 `y` 向量长度不匹配导致的。请检查一下 `x` 和 `y` 向量的长度是否一致。
另外,`surf` 函数的输入参数应该是一个二维网格矩阵,而不是两个一维向量。因此,需要将 `x` 和 `y` 向量转换为网格矩阵。
以下是修改后的代码:
```matlab
% 定义 x 和 y 的取值范围
x = 0:5:110;
y = 0:5:110;
% 计算每个点的高度
z = zeros(length(x), length(y));
for i = 1:length(x)
for j = 1:length(y)
if x(i)>=17 && x(i)<45 && y(j)>=17 && y(j)<45
z(i,j) = 4/7*x(i) - 9.7;
elseif x(i)>=45 && x(i)<65 && y(j)>=45 && y(j)<65
z(i,j) = 16;
elseif x(i)>=65 && x(i)<93 && y(j)>=65 && y(j)<93
z(i,j) = -4/7*x(i) + 53.1;
elseif x(i)>=93 && x(i)<=110 && y(j)>=93 && y(j)<=110
z(i,j) = 0;
end
end
end
% 将 x 和 y 向量转换为网格矩阵
[X,Y] = meshgrid(x,y);
% 绘制三维图
surf(X, Y, z, 'EdgeColor', 'none')
xlabel('x')
ylabel('y')
zlabel('z')
```
这样就可以成功绘制出图形了。