2013-04-03 47 views
2

在Matlab中,我有一個3D曲線(3個座標的數組),它在三維座標系中穿過xy平面。 「曲線」只是一堆x,y,z點,其形狀是橢圓形,跨越三維空間並朝着原點盤旋。它穿過xy平面幾次,當曲線與xy平面相交時(即當z = 0時),我想插入x和y座標。我該怎麼做?MATLAB,交叉xy平面的3D曲線插值

+0

我很困惑..你的意思是說你有一個3D數組(有3個座標的數組),其中的數值,例如'A(i,j,k)'表示函數的值(x,y,z)'爲'x = i','y = j'和'z = k'(因此是4D曲線)?或者你更喜歡用f(i,j)= A(i,j)'(因此是3D曲線)的二維數組(具有2個座標的數組)? –

+0

是的,但我不知道這個功能。當我使用plot3函數繪製曲線時,我只知道曲線穿過xy平面。我想計算曲線與xy平面相交的座標。 –

+0

所以,你必須給它像'plot3(X,Y,Z)',其中'X','Y'和'Z'是相同大小的矩陣嗎? –

回答

1

假設你有3個向量xy,並且z座標,

crossidx = find(diff(sign(z)) ~= 0); % z(zcross) and z(zcross+1) have different signs 
z1 = z(crossidx); 
z2 = z(crossidx+1); 
dz = z2 - z1; 
alpha = -z1; 
beta = z2; 
xcross = (beta*x(crossidx) + alpha*x(crossidx+1))./dz; 
ycross = (beta*y(crossidx) + alpha*y(crossidx+1))./dz; 
zcross = 0; 
hold on; plot3(xcross, ycross, zcross, '*'); 

它應該工作,要麼正到負或從負到正交叉。我編寫的代碼假設只有1個過零點,但我認爲它也適用於任意數量的過零點。

+0

它的工作原理。非常感謝你。 –