3軸加速度の結果から体積を求めたいです

3 views (last 30 days)
3軸加速度計の結果から、以下の式で3次元にプロットした結果の95%を含む体積を求めようとしています。
4pi / 3×(中心から楕円までの最大長)×(最小長)×(2軸に直行する軸の長さ)
こちらの最大長、最小長、2軸に直行する軸の長さを求める方法の模索に苦慮しています。
これらを求める方法を教えて頂けると幸いです。
  4 Comments
daiki naito
daiki naito on 5 Mar 2022
ありがとうございます。
求める楕円体は回転体ではございません。
ご教示いただいたアプローチ方法を試してみようと思います。
対応していただき、ありがとうございました。

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 5 Mar 2022
体積演算まで書いておきます
clc,clear
ここでは原点中心とした楕円体を作成しています。
[X,Y,Z]=ellipsoid(0,0,0,6,3.25,3.25);
fig(X,Y,Z);hold off;
X軸、Y軸、Z軸上で絶対値が最大となる点をとります
X,Y,Zは行列なので行と列での最大を探します
idx(:,:,1) = abs(X) == max(abs(X),[],'all');
idx(:,:,2) = abs(Y) == max(abs(Y),[],'all');
idx(:,:,3) = abs(Z) == max(abs(Z),[],'all');
絶対値なので2点ずつ現れます
fig(X,Y,Z)
for ii = 1:length(idx(1,1,:))
scatter3(X(idx(:,:,ii)),Y(idx(:,:,ii)),Z(idx(:,:,ii)),'red','filled')
end
さて4pi / 3×(中心から楕円までの最大長)×(最小長)×(2軸に直行する軸の長さ)
つまりを求めていきましょう
a = max(X(idx(:,:,1)));
b = max(Y(idx(:,:,2)));
c = max(Z(idx(:,:,3)));
V = 4/3*a*b*c;
fprintf('最大長:%d\n最小長:%d\n2軸に直行する軸長さ:%d\n体積:%d',a,b,c,V);
最大長:6 最小長:3.250000e+00 2軸に直行する軸長さ:3.250000e+00 体積:8.450000e+01
以下は楕円体の図を描写する関数です
function [] = fig(X,Y,Z)
figure
plot3(X(:),Y(:),Z(:),'--k')
hold on
surf(X,Y,Z,'EdgeColor','none','FaceAlpha',.2)
xline(0)
yline(0)
end
  3 Comments
daiki naito
daiki naito on 6 Mar 2022
ありがとうございました。 とても助かりました。 また何かありましたらよろしくお願いします。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!