Plane Fitting a 3D Scatter Plot
조회 수: 89 (최근 30일)
이전 댓글 표시
I have a 3D scatter plot that I want to have a planar fit. How do you do this?
x = [14.9 1.7 0.0 10.9 0.0];
y = [11.3 9.1 23.7 12.8 2.9];
z = [5.32787E-17 2.93234E-16 2.09997E-16 5.45E-17 4.55E-16];
scatter3(x,y,z)
댓글 수: 0
채택된 답변
Star Strider
2019년 3월 7일
A simple linear regression is straightforward:
x = [14.9 1.7 0.0 10.9 0.0];
y = [11.3 9.1 23.7 12.8 2.9];
z = [5.32787E-17 2.93234E-16 2.09997E-16 5.45E-17 4.55E-16];
B = [x(:) y(:) ones(size(x(:)))] \ z(:);
xv = linspace(min(x), max(x), 10)';
yv = linspace(min(y), max(y), 10)';
[X,Y] = meshgrid(xv, yv);
Z = reshape([X(:), Y(:), ones(size(X(:)))] * B, numel(xv), []);
scatter3(x,y,z, 'filled')
hold on
mesh(X, Y, Z, 'FaceAlpha', 0.5)
hold off
view(-120, 35)
title(sprintf('Z = %+.3E\\cdotX %+.3E\\cdotY %+.3E', B))
producing:
댓글 수: 6
Damla Yüksel
2019년 12월 1일
Hello, in the following line, matlab returns an error:
"Error using plot3
Vectors must be the same length.
Error in (line 33)
plot3([x; x], [y; y], [z(:) Ze]', '-r','LineWidth',1) % Plot Errors (Red Lines From Surface To Data)"
What should I do for this error?
Star Strider
2019년 12월 1일
You should make the vectors the same length!
It is best for you to post this as a new Question, supplying ‘x’, ‘y’, ‘z’ and ‘Ze’.
Your Comment does not relate to the substance of this thread, so I will delete it (and my Comment here) in a few yours.
추가 답변 (1개)
KSSV
2019년 3월 7일
x = [14.9 1.7 0.0 10.9 0.0];
y = [11.3 9.1 23.7 12.8 2.9];
z = [5.32787E-17 2.93234E-16 2.09997E-16 5.45E-17 4.55E-16];
nx = 10 ; ny = 10 ;
xi = linspace(min(x),max(x),nx) ;
yi = linspace(min(y),max(y),ny) ;
[X,Y] = meshgrid(xi,yi) ;
F = scatteredInterpolant(x',y',z') ;
Z = F(X,Y) ;
scatter3(x,y,z)
hold on
surf(X,Y,Z)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Curve Fitting Toolbox에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!