在matlab中,我计算出一个表示椭圆形横截面应力场的数组。我已经完成了
% Input
a = 4; b = 2; M = 5;
K = pi*a^3*b^3/(a^2+b^2);
% Stress function
y = linspace(-a,a);
z = linspace(-b,b);
[Y,Z] = meshgrid(y,z);
X = 2*M/K*(a^4*Z.^2+b^4*Y.^2)^(1/2)/(a^2+b^2);
同时我将省略号定义为
t = -pi:0.01:pi;
YEllipsis = a*cos(t);
ZEllipsis = b*sin(t);
我需要删除位于上面定义的省略号边框之外的数组X的所有组件。我的目的是用线绘制省略号的轮廓,并在同一图中用等高线绘制应力场(X)。
有关如何做到这一点的任何建议吗?
答案 0 :(得分:0)
了解逻辑索引。这是article,应该让你去。
这里是将X的所有值设置为零的代码,它位于椭圆之外。 (我假设你的意思是“删除位于边界外的数组X的所有组件”,这是典型的方法。)
X(y.^2/a^2 + z.^2/b^2 < 1) = 0;
或者,如果你真的只是想要那个数组,你可以这样做:
XNew = X(y.^2/a^2 + z.^2/b^2 < 1);