3軸加速度の結果から体積を求めたいです
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
daiki naito
am 4 Mär. 2022
Kommentiert: daiki naito
am 6 Mär. 2022
3軸加速度計の結果から、以下の式で3次元にプロットした結果の95%を含む体積を求めようとしています。
4pi / 3×(中心から楕円までの最大長)×(最小長)×(2軸に直行する軸の長さ)
こちらの最大長、最小長、2軸に直行する軸の長さを求める方法の模索に苦慮しています。
これらを求める方法を教えて頂けると幸いです。
4 Kommentare
Hernia Baby
am 5 Mär. 2022
ありがとうございます
楕円体が回転体なのか等でアプローチが変わると思います
楕円体が原点とx,y,z軸を通るなら以下に近いアプローチが取れますがいかがですか?
clc,clear
[X,Y,Z]=ellipsoid(0,0,0,6,3.25,3.25);
plot3(X(:),Y(:),Z(:),'--k')
hold on
surf(X,Y,Z,'EdgeColor','none','FaceAlpha',.2)
xline(0)
yline(0)
idx(:,:,1) = abs(X) == max(abs(X),[],'all');
idx(:,:,2) = abs(Y) == max(abs(Y),[],'all');
idx(:,:,3) = abs(Z) == max(abs(Z),[],'all');
for ii = 1:length(idx(1,1,:))
scatter3(X(idx(:,:,ii)),Y(idx(:,:,ii)),Z(idx(:,:,ii)),'red','filled')
end
Akzeptierte Antwort
Hernia Baby
am 5 Mär. 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);
以下は楕円体の図を描写する関数です
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 Kommentare
Hernia Baby
am 6 Mär. 2022
懸念していた部分はこの楕円体が平行移動したり、X,Y,Z軸にθ°回転するケースです。今回はそれはなさそうとの事なので記載してません。また何かありましたら、気軽にどうぞ。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 表面プロットとメッシュ プロット finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

