vmc = @(x, y) sqrt(x.^2 - x.*y + y.^2)-yieldstress.*(1+a1*(-sqrt(3)/3)); % trc = @(x, y) 0.5 * max(cat(3, abs(x - y), abs(x), abs(y))-1, [], 3); xx = linspace(-limitxy, limitxy, 1000); yy = linspace(-limitxy, limitxy, 1000); [X, Y] = ndgrid(xx, yy); [C5,h5] = contour(X, Y, vmc(X, Y), [1 1]);给曲线添加符号标记,并控制标记点数量
时间: 2023-09-10 12:07:38 浏览: 516
要给曲线添加符号标记,可以使用MATLAB函数"clabel"。以下是添加标记并控制标记点数量的代码示例:
[C5,h5] = contour(X, Y, vmc(X, Y), [1 1]);
clabel(C5,h5, 'LabelSpacing', 500); % 控制标记点数量,每500个像素添加一个标记
相关问题
vmc = @(x, y) sqrt(x.^2 - x.*y + y.^2); vmc1 = @(x, y) x.^2 - x.*y + y.^2; trc = @(x, y) 0.5 * max(cat(3, abs(x - y), abs(x), abs(y)), [], 3); xx = linspace(-2, 2, 101); yy = linspace(-2, 2, 101); [X, Y] = ndgrid(xx, yy); [C,h] = contour(X, Y, vmc(X, Y), [1 1]);给contour绘制的曲线增加点状标识
您可以使用 `scatter` 函数在 `contour` 绘图上增加点状标识。具体来说,您需要先将 `contour` 绘图的 `handle` 作为 `scatter` 函数的第一个输入参数,然后设置点的位置和其他参数。以下是一个简单的示例:
```matlab
% 定义函数和绘图区域
vmc = @(x, y) sqrt(x.^2 - x.*y + y.^2);
xx = linspace(-2, 2, 101);
yy = linspace(-2, 2, 101);
[X, Y] = ndgrid(xx, yy);
% 绘制等高线图和点状标识
[C, h] = contour(X, Y, vmc(X, Y), [1 1]);
hold on;
scatterHandle = scatter(C(1,:), C(2,:), 'r');
```
在上面的代码中,我们首先定义了一个函数 `vmc` 和绘图区域。然后,我们使用 `contour` 函数绘制了函数的等高线图,并且只显示等高线值为 1 的曲线。接着,我们使用 `scatter` 函数在等高线图上增加点状标识,其中 `C(1,:)` 和 `C(2,:)` 是等高线曲线上的点的位置,`'r'` 是点的颜色。最后,我们使用 `hold on` 命令将等高线图和点状标识保持在同一张图中。
需要注意的是,`contour` 函数返回的等高线数据是一个 2xN 的矩阵,其中第一行是等高线曲线上点的 x 坐标,第二行是等高线曲线上点的 y 坐标。因此,我们可以直接将等高线数据作为 `scatter` 函数的第一个参数。
%% Drucker-Prager 参数 a=-0.1039; %% Modified Drucker-Prager 参数 a1=0.9954; a2=0.0046; a3=-5.65469; %% 二维Mises vmc = @(x, y) sqrt(x.^2 - x.*y + y.^2)-1; %% 二维 Tresca trc = @(x, y) 0.5 * max(cat(3, abs(x - y), abs(x), abs(y))-1, [], 3); %% Drucker-Prager和Modified Drucker-Prager DruPra = @(x, y) sqrt(x.^2 - x.*y + y.^2)*(1+a*(x+y)/2/ sqrt(x.^2 - x.*y + y.^2))-1; xx = linspace(-6, 6, 1000); yy = linspace(-6, 6, 1000); [X, Y] = ndgrid(xx, yy);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% contour(X, Y, vmc(X, Y), [1 1]) hold on contour(X, Y, trc(X, Y), [1 1]); hold on contour(X, Y, DruPra(X, Y), [1 1]); hold on % contour(X, Y, ModiDruPra(X, Y), [1 1]); title('Mises Yield Surface in 2D Principal Stress Space'); hold on,,给这段程序设定求解容差
可以通过在程序开头添加以下代码来设定求解容差:
```
options = optimset('TolFun', 1e-6, 'TolX', 1e-6);
```
这里将函数求解的容差设为1e-6,可以根据需要进行调整。然后在调用函数的时候,将选项作为第三个参数传入,例如:
```
fminsearch(@(x) myfun(x, y, z), x0, options)
```
其中,`myfun`是要求解的函数,`x0`是初值,`options`是设定的选项。
阅读全文