簡體   English   中英

Matlab中表面圖上的連接點

[英]Connecting points on a surface plot in matlab

我正在一個項目中,我們以線性方式進行測量並旋轉樣本以生成3D表面圖。

數據來自極性格式,我們有4個數據集:

theta = 0  , r = -20 -- 20
theta = 45 , r = -20 -- 20
theta = 90 , r = -20 -- 20
theta = 135, r = -20 -- 20

通過生成帶有sin和cos的x和y向量並將結果相對於該矩陣進行繪制,可以將其轉換為笛卡爾點。

因此,示例“准備繪制”矩陣集如下所示:

x [4x21 double]
-20    -18    -16 ..
-14.14 -12.73 -11.31 ..
0      0      0 ..
..

y [4x21 double]
0      0      0 ..
-14.14 -12.73 -11.31 ..
-20    -18    -16 ..
..

z [4x21 double]
.224 .281 .320 ..
.228 .280 .312 ..
.282 .349 .377 ..
..

具有一些基本格式的輸出表面圖如下所示: 以上數據的笛卡爾曲面

Matlab連接我想要的向量之間。 但是,它沒有將90度旋轉連接到135度旋轉。 我如何做到這一點?

產生類似於上面示例的圖形的基本代碼是這樣的:

theta = [ 0 , -45 , -90 , -135];
r = -20 : 2 : 20;
for i = 1 : 4
    xc(i,:) = r .* cosd(theta(i));
    yc(i,:) = r .* sind(theta(i));
    zc(i,:) = [[0 : 0.1 : 0.9] , [1 : -0.1 : 0]];
end
figure
surf(xc,yc,zc);

您只需要明確地執行theta=-180 就像plot不會環繞並連接第一個點和最后一個點一樣, surf不會將第一個“邊緣”連接到最后一個“邊緣”。 使theta=[0 -45 -90 -135 -180]for i=1:5 ,這應該很好。

在此處輸入圖片說明

您會發現着色看起來有些怪異,這可能會更好看,具體取決於應用程序: surf(xc,yc,zc,'FaceColor','interp')

在此處輸入圖片說明

創建數據的更好方法是

[R,TH]=meshgrid(r,theta);
[xc,yc]=pol2cart(TH*pi/180,R);
zc = repmat([[0 : 0.1 : 0.9] , [1 : -0.1 : 0]],length(theta),1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM