Z軸情報のマトリクスから曲面近似を行う方法

조회 수: 9 (최근 30일)
mi
mi 2021년 10월 28일
댓글: mi 2021년 11월 2일
ある3次元データに対して,各点の高さ情報が入ったマトリクスAがあります.
このAから曲面近似を行いたいと思っています.
Aに沿うようにx座標,y座標の情報をいれたマトリクスx,yを作製し
Matlabヘルプを参考に以下のように書いてみたのですが,うまく動きませんでした.
sf = fit([x, y],A,'poly23')
どうしたら各点の高さ情報マトリクスから曲面近似ができるでしょうか?
ちなみに曲面はほぼ球面の一部となっています.
  댓글 수: 2
Atsushi Ueno
Atsushi Ueno 2021년 10월 28일
  • Aとx,yはどんなデータですか?
  • どんなエラーが出ますか?
  • Curve Fitting Toolboxは入っていますか?
load franke
size(x)
ans = 1×2
293 1
size(y)
ans = 1×2
293 1
size(z)
ans = 1×2
293 1
sf = fit([x, y],z,'poly23');
plot(sf,[x,y],z)
mi
mi 2021년 11월 1일
  • Aとx,yはどんなデータですか? 
⇒Aは2862×1415の大きさで,各座標点のz軸の値が入っています.
xは1415×1の大きさで,Aに対応するようx軸の値が入っています.(1.25 2.5 3.75 5 6.25…)
yは2862×1の大きさで,Aに対応するようy軸の値が入っています. (0.625 1.25 1.875 2.5 3.125 3.75…)
座標(x(n),y(m))のz軸値がA(m,n)となります.
  • どんなエラーが出ますか?
⇒「エラー: horzcat 連結する配列の次元が一致しません。」と出ます.
  • Curve Fitting Toolboxは入っていますか?
⇒入っています.
どうぞよろしくお願いいたします。

댓글을 달려면 로그인하십시오.

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 1일
頂いたコメントからの想定ですが、xとyの情報が1次元であるのに対して、Aの情報が2次元なので、そのままfit関数に適用しようとすると、データの数が合わない事になります。平面上の各座標に応じたx座標とy座標をベクトルにする必要があるので、meshgrid関数で平面上のx座標、y座標を生成して、これを行列⇒ベクトルに伸ばしてfit関数に与えると動きます。
下の例は14*28と少ないデータで実行しました。1415*2862だとwarningが出ました。
x = (1.25:1.25:14*1.25)'; % xは1415×1の大きさで,Aに対応するようx軸の値が入っています.(1.25 2.5 3.75 5 6.25…)
y = (0.625:0.625:28*0.625)'; % yは2862×1の大きさで,Aに対応するようy軸の値が入っています. (0.625 1.25 1.875 2.5 3.125 3.75…)
[xx yy] = meshgrid(x,y); % これ(meshgrid)が必要です
A = rand([28,14]); % Aは2862×1415の大きさで,各座標点のz軸の値が入っています.
sf = fit([xx(:), yy(:)], A(:),'poly23');
plot(sf,[xx(:), yy(:)], A(:));
zlim([-10,10])
  댓글 수: 1
mi
mi 2021년 11월 2일
ありがとうございます。
頂いたプログラムを使用して多項式近似モデルの次数を調整することで,うまく成功しました.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Curve Fitting Toolbox 入門에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!