关于Matlab二元二维等值线问题代码的修改。

img

img

img

img

img


绘制出x或者y方向上应力的等值线图,画一个就行,直角坐标和极坐标公式都给出,x y均在-25到25mm之间 D为50mm p为30kN l为25mm 第3幅和第4幅是画出来之后的图,只不过没有clabel ,需要画出类似于clabel,这是我之前提出的问题。下面是我的代码和生成的图片

img

img

%%
%ezcontour ezsurfc x方向的
syms x y;
f=763.94*(((y+25).^3)./(((y+25).^2+x.^2).^2)+(((25-y).^3)-1/50)./(((25-y).^2+x.^2).^2)-1/50);
fcontour(f,[-25 25],'LevelStep',6);
[C,h]=fcontour(x,y,f);clabel(C,h);
axis equal;

%%
%ezcontour ezsurfc y 方向的
syms x y
f=763.94*((((y+25).(x.^2))./((y+25).^2+x.^2).^2)+(((25-y).(x.^2))./((25-y).^2+x.^2).^2)-1/50);
fcontour(f,[-25 25],'LevelStep',6);
[C,h]=fcontour(x,y,f);clabel(C,h);
axis equal;

问题:1,我将x,y两个元互换,可以保证两端应力集中区在上下,不然在左右。不知道有没有其他方法可以让图线密集区在上下?
2,我x,y方向应力等值线图和原论文的等值线的图片相方。即x方向的图片和论文的y方向的图片一致。不知道为啥?
3.虽然我设置了clabel 但是在图片上也没有显示,很奇怪。
作为Matlab初学者,还需要Matlab专家进行指导一下,🙏,

1,除了交换x,y,也可以改变视角 view(90,90); 这样调过来了,要不交换x,y的值,把
f=763.94*(((y+25).^3)./(((y+25).^2+x.^2).^2)+(((25-y).^3)-1/50)./(((25-y).^2+x.^2).^2)-1/50); 写成函数

function ff=MyF(x,y);
  ff=763.94*(((y+25).^3)./(((y+25).^2+x.^2).^2)+(((25-y).^3)-1/50)./(((25-y).^2+x.^2).^2)-1/50); 
end

然后你调用时候交换

MyF(x,y);
MyF(y,x);
2、不会

这样也能达到目的。


%%
%ezcontour ezsurfc x方向的
figure(1);
[x,y]=meshgrid(-25:1:25);
f=763.94*(((y+25).^3)./(((y+25).^2+x.^2).^2)+(((25-y).^3)-1/50)./(((25-y).^2+x.^2).^2)-1/50);
[C,h]=contour(x,y,f,'LevelStep',6);
%旋转显示,类似于调换x,y
view(90,90);
clabel(C,h);
% for i=-25:5:25
%     for j=-25:5:25
%         text(i,j,num2str(763.94*(((j+25).^3)./(((j+25).^2+i.^2).^2)+(((25-j).^3)-1/50)./(((25-j).^2+i.^2).^2)-1/50)));
%     end
% end
%[C,h]=contour3(x,y,f);
%clabel(C,h);
axis equal;

%%
%ezcontour ezsurfc y 方向的

figure(2);
[x,y]=meshgrid(-25:1:25);
f=763.94*((((y+25).*(x.^2))./((y+25).^2+x.^2).^2)+(((25-y).*(x.^2))./((25-y).^2+x.^2).^2)-1/50);
contour(x,y,f,'LevelStep',6);
%[C,h]=fcontour(x,y,f);
%clabel(C,h);
axis equal;

img

3、你用的步长是6,但是画图好像得用间隔1才圆滑,也可能是我没理解这个函数clabel

img