xyzφデータ入力のgradient演算

3 ビュー (過去 30 日間)
繁
2023 年 2 月 19 日
コメント済み: 2023 年 3 月 17 日
x,y,z座標とその場所のスカラ値φで構成される4列複数行のテーブルデータがあります。このデータのgradient(勾配)を求める方法を教えてもらえますか?
gradient関数のドキュメントを確認すると、xyzの行列にしてあげれば演算可能なようですが、本データのxyzは等間隔でない位置関係にあります。
よろしくお願いします。

採用された回答

covao
covao 2023 年 3 月 13 日
移動済み: Atsushi Ueno 2023 年 3 月 15 日
等間隔でないx,y,zデータは、scatteredInterpolant関数を用いて等間隔の点に補間し、gradient関数で勾配を算出することができます。
一様に分布していないデータの表面をプロットする例が、以下のドキュメントにあります。
x = rand(100,1)*16 - 8;
y = rand(100,1)*16 - 8;
r = sqrt(x.^2 + y.^2) + eps;
z = sin(r)./r;
xlin = linspace(min(x),max(x),33);
ylin = linspace(min(y),max(y),33);
[X,Y] = meshgrid(xlin,ylin);
f = scatteredInterpolant(x,y,z);
Z = f(X,Y);
z = sin(r)./r;
figure
mesh(X,Y,Z) %interpolated
axis tight; hold on
plot3(x,y,z,'.','MarkerSize',15) %nonuniform
figure
contour(X,Y,Z)
hold on
[fx,fy] = gradient(Z,0.1);
quiver(X,Y,fx,fy)
hold off
  1 件のコメント
繁
2023 年 3 月 17 日
ありがとうございます。こちらで問題解決できました。

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

その他の回答 (0 件)

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!