yield = 50000; %% 坐标尺寸 A_Dyucker_in_Three_dimensiona_in_pai_space_curve_3D1 limxyz = 60; piii = 1; f1=@(x,y,z) x+y+z; f2=@(x,y,z) max(abs(x),abs(y),abs(z))-((min(abs(x),abs(y))+min(abs(y),abs(z))+min(abs(z),abs(x)))/2)-yield; %% 1./((1./(3.*sqrt(3)-b3./27))).* [X,Y]=meshgrid(-limxyz:piii:limxyz); Z1=-X-Y; % 绘制曲面 surf(X,Y,Z1,'EdgeColor','none','FaceAlpha',0,'FaceColor',[82,124,179]./255) hold on; fimplicit3(f2,'EdgeColor','none','FaceAlpha',0,'FaceColor',[169,64,71]./255) % 通过切片contour函数获取0等势面 [CX,CY,CZ]=meshgrid(-limxyz:piii:limxyz); CV=f1(CX,CY,CZ)-f2(CX,CY,CZ); S=contourslice(CX,CY,CZ,CV,X,Y,Z1,[0,0]); S.EdgeColor = 'k'; S.LineWidth = 3; S.LineStyle = '-'; hold on 这段代码运行提示:错误使用 max 不支持具有两个要比较的矩阵和一个工作维度的 MAX。 出错 New_Cazacu_Barlat_Of_Third_Effect_in_pai_space_curve_3D_4>@(x,y,z)max(abs(x),abs(y),abs(z))-((min(abs(x),abs(y))+min(abs(y),abs(z))+min(abs(z),abs(x)))/2)-yield 出错 New_Cazacu_Barlat_Of_Third_Effect_in_pai_space_curve_3D_4 (line 142) CV=f1(CX,CY,CZ)-f2(CX,CY,CZ);
时间: 2023-11-19 19:06:03 浏览: 22
根据您提供的代码,您的问题可能是由于 `max` 函数不支持比较两个矩阵和一个工作维度引起的。可能是由于您在 `f2` 中的 `max` 函数的输入参数不正确,需要修改为对每个坐标点进行比较。您可以将 `f2` 函数修改为如下形式:
```matlab
f2 = @(x, y, z) max([abs(x(:)), abs(y(:)), abs(z(:))], [], 2) - ((min([abs(x(:)), abs(y(:)), abs(z(:))], [], 2) + min([abs(y(:)), abs(z(:)), abs(x(:))], [], 2) + min([abs(z(:)), abs(x(:)), abs(y(:))], [], 2)) / 2 - yield;
```
上述代码中,`max` 函数和 `min` 函数的第二个输入参数为 `[]`,表示沿着第二个维度比较,即对每个坐标点进行比较。此外,我们使用 `(:)` 将矩阵变成列向量,以便和常数 `yield` 进行运算。
请注意,修改后的代码仅解决了 `max` 函数可能引起的问题。如果您仍然无法运行代码,请提供完整的错误信息和相关的代码,以便更好地帮助您解决问题。
相关问题
in _error_catcher yield
这个错误提示是由于在使用生成器时发生了异常。生成器函数使用 `yield` 语句来生成值,并在下次调用时继续执行。当生成器函数内部发生异常时,异常会被传递到生成器的调用方。
可能的原因包括:
1. 生成器函数内部发生了异常:请检查生成器函数内部的代码,确保没有引发异常。可以使用 `try-except` 块来捕获异常并进行处理。
2. 生成器函数调用时未正确处理异常:如果您在调用生成器函数时,没有正确处理异常,那么异常就会被传递给调用方。请确保在调用生成器函数时,使用 `try-except` 块来捕获异常并进行适当处理。
如果您能提供更多相关的代码和错误信息,我可以更具体地帮助您解决这个问题。
in _error_catcher yield
这是一个Python中的yield语句,用于生成器函数中。yield语句的作用是将函数的执行结果返回给调用者,并暂停函数的执行,等待下一次调用继续执行。在这个特定的上下文中,yield语句可能是用于捕获错误并将其返回给调用者。