I know the coordinates of several scattered points in space, how can I fit them to a sphere?

1 回表示 (過去 30 日間)
I already know the coordinates (x,y,z) of several scattered points on a sphere in space, and my goal is to fit a sphere and get the radius. I think I just need to bring their coordinates into the code I found. I would like to ask how to bring in the coordinates of these points?
function [r,a,b,c] = sphereFit(data)
xx = data(:,1);
yy = data(:,2);
zz = data(:,3);
AA = [-2*xx, -2*yy , -2*zz , ones(size(xx))];
BB = [ -(xx.^2+yy.^2+zz.^2)];
YY = mldivide(AA,BB); %Trying to solve AA*YY = BB
a = YY(1);
b = YY(2);
c = YY(3);
D = YY(4); % D^2 = a^2 + b^2 + c^2 -r^2(where a,b,c are centers)
r = sqrt((a^2+b^2+c^2)-D);
The second code:
function [Center,Radius] = sphereFit(X)
A=[mean(X(:,1).*(X(:,1)-mean(X(:,1)))), ...
2*mean(X(:,1).*(X(:,2)-mean(X(:,2)))), ...
2*mean(X(:,1).*(X(:,3)-mean(X(:,3)))); ...
0, ...
mean(X(:,2).*(X(:,2)-mean(X(:,2)))), ...
2*mean(X(:,2).*(X(:,3)-mean(X(:,3)))); ...
0, ...
0, ...
mean(X(:,3).*(X(:,3)-mean(X(:,3))))];
A=A+A.';
B=[mean((X(:,1).^2+X(:,2).^2+X(:,3).^2).*(X(:,1)-mean(X(:,1))));...
mean((X(:,1).^2+X(:,2).^2+X(:,3).^2).*(X(:,2)-mean(X(:,2))));...
mean((X(:,1).^2+X(:,2).^2+X(:,3).^2).*(X(:,3)-mean(X(:,3))))];
Center=(A\B).';
Radius=sqrt(mean(sum([X(:,1)-Center(1),X(:,2)-Center(2),X(:,3)-Center(3)].^2,2)));
Which code should I choose and apply correctly?
  2 件のコメント
John D'Errico
John D'Errico 2023 年 2 月 4 日
編集済み: John D'Errico 2023 年 2 月 4 日
So, instead of using the code I already gave you that fits the sphere in a well posed way in your last question, now you ask which of these poorly written pieces of code you should use. Sigh. If someone does tell you which poorly written code to use, will you then turn the question into an image processing question again?
Sterne_17
Sterne_17 2023 年 2 月 4 日
Sir. Thank you! The code you suggested to me is very, very well written! I just wasn't sure how to go about using it, so I replied to you to ask you about bringing a series of scattered coordinates into the code you wrote. I'm a starter and don't have any experience writing code, that's why I asked you and it has nothing to do with the type of question, I'm also just using the forum to ask questions. I meant no disrespect and I just adopted your answer. I just wanted to ask how to bring these scattered coordinates into the code, because I don't understand it and I can't tell if the code is good or bad. In this question I attached the code I don't understand either, I just want to ask how to bring the scatter coordinates into your code.

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2023 年 2 月 4 日
編集済み: Image Analyst 2023 年 2 月 4 日
It looks like the input data for both functions is an N-by-3 matrix.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeScatter Plots についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by