2016-01-19 20 views
0

在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

瞭解邏輯索引。這是一個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);