matlab - today - गैस सिलेंडर रेट 2018




मटैब में 3 डी सिलेंडर की सतह का स्पष्टीकरण (3)

मेरे पास एक डाटासेट है जो एक 3D सिलेंडर ( xx,yy,zz,C ) के एक बिंदु बादल का वर्णन करता है:

और मैं इस डेटासेट से एक सतह की साजिश बनाना चाहूंगा, इसी तरह से

ऐसा करने के लिए मैंने सोचा कि मैं अपने बिखरे हुए डेटा को एक नियमित ग्रिड पर TriScatteredInterp का इस्तेमाल करके फिर surf का उपयोग करके साजिश कर सकता हूं:

F = TriScatteredInterp(xx,yy,zz);
max_x = max(xx); min_x = min(xx);
max_y = max(yy); min_y = min(yy);
max_z = max(zz); min_z = min(zz);
xi = min_x:abs(stepSize):max_x;
yi = min_y:abs(stepSize):max_y;
zi = min_z:abs(stepSize):max_z;
[qx,qy] = meshgrid(xi,yi);
qz = F(qx,qy);
F = TriScatteredInterp(xx,yy,C);
qc = F(qx,qy);

figure
surf(qx,qy,qz,qc);
axis image

यह उत्तल और अवतल वस्तुओं के लिए वास्तव में अच्छी तरह से काम करता है लेकिन सिलेंडर के लिए इस में समाप्त होता है:

क्या कोई मुझे अच्छी साजिश हासिल करने के लिए कैसे मदद कर सकता है?


एक सिलेंडर सभी बिंदुओं का संग्रह एक रेखा के समान है। तो आप जानते हैं कि आपके xx , yy और zz डेटा में एक चीज आम है, और यही है कि वे समरूपता की रेखा से समान दूरी पर झूठ बोलें। आप इसका उपयोग एक नया सिलेंडर बनाने के लिए कर सकते हैं (इस उदाहरण में z- अक्ष होने के लिए समरूपता की रेखा):

% best-fitting radius 
% NOTE: only works if z-axis is cylinder's line of symmetry
R = mean( sqrt(xx.^2+yy.^2) );

% generate some cylinder
[x y z] = cylinder(ones(numel(xx),1));

% adjust z-range and set best-fitting radius
z = z * (max(zz(:))-min(zz(:))) + min(zz(:));
x=x*R;
y=y*R;

% plot cylinder
surf(x,y,z)

TriScatteredInterp फॉर्म z = f (x, y) के फिटिंग के 2 डी सतहों के लिए अच्छा है, जहां f एक एकल मूल्य वाला फ़ंक्शन होता है। यह आपकी तरह एक बिंदु बादल फिट करने के लिए काम नहीं करेगा

चूंकि आप एक सिलेंडर के साथ काम कर रहे हैं, जो कि संक्षेप में, एक 2 डी सतह है, यदि आप ध्रुवीय निर्देशांक में परिवर्तित करते हैं, और, कहते हैं, कोण और ऊंचाई के एक फ़ंक्शन के रूप में त्रिज्या फिट - - जैसे कुछ की तरह आप अभी भी TriScatterdInterp का उपयोग कर सकते हैं:

% convert to polar coordinates:
theta = atan2(yy,xx);
h = zz;
r = sqrt(xx.^2+yy.^2);

% fit radius as a function of theta and h
RFit = TriScatteredInterp(theta(:),h(:),r(:));

% define interpolation points
stepSize = 0.1;
ti = min(theta):abs(stepSize):max(theta);
hi = min(h):abs(stepSize):max(h);
[qx,qy] = meshgrid(ti,hi);
% find r values at points:
rfit = reshape(RFit(qx(:),qy(:)),size(qx));
% plot
surf(rfit.*cos(qx),rfit.*sin(qx),qy)

मुझे लगता है कि आप के लिए कौन-सा लोकाई कर रहे हैं वह है उत्तल हल फ़ंक्शन। इसके दस्तावेज़ीकरण देखें

कश्मीर = कन्फुल (एक्स, वाई, जेड) अंकों की 3-डी उत्तल पतलु देता है (एक्स, वाई, जेड), जहां एक्स, वाई, और जेड कॉलम वैक्टर हैं। कश्मीर उत्तल पतवार की सीमा का प्रतिनिधित्व करते त्रिकोण है। कश्मीर आकार एमटीआरआई-बाय-3 का है, जहां एमटीआरआई त्रिकोणीय पहलुओं की संख्या है। यह है कि, कश्मीर की प्रत्येक पंक्ति बिंदु सूचकांक के अनुसार परिभाषित त्रिकोण है।

2 डी में उदाहरण

xx = -1:.05:1; yy = abs(sqrt(xx));
[x,y] = pol2cart(xx,yy);
k = convhull(x,y);
plot(x(k),y(k),'r-',x,y,'b+')

2-डी में कफॉल का उत्पादन करने के लिए भूखंड का उपयोग करें 3-डी में कन्फ्यूबल के उत्पादन को साजिश करने के लिए ट्रिसरफ या ट्रमेश का उपयोग करें