删除超出给定限制的阵列组件

时间:2016-01-19 18:52:48

标签: arrays matlab sorting

在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)。

有关如何做到这一点的任何建议吗?

1 个答案:

答案 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);