- Aとx,yはどんなデータですか?
- どんなエラーが出ますか?
- Curve Fitting Toolboxは入っていますか?
Z軸情報のマトリクスから曲面近似を行う方法
5 views (last 30 days)
Show older comments
ある3次元データに対して,各点の高さ情報が入ったマトリクスAがあります.
このAから曲面近似を行いたいと思っています.
Aに沿うようにx座標,y座標の情報をいれたマトリクスx,yを作製し
Matlabヘルプを参考に以下のように書いてみたのですが,うまく動きませんでした.
sf = fit([x, y],A,'poly23')
どうしたら各点の高さ情報マトリクスから曲面近似ができるでしょうか?
ちなみに曲面はほぼ球面の一部となっています.
2 Comments
Atsushi Ueno
on 28 Oct 2021
load franke
size(x)
size(y)
size(z)
sf = fit([x, y],z,'poly23');
plot(sf,[x,y],z)
Accepted Answer
Atsushi Ueno
on 1 Nov 2021
頂いたコメントからの想定ですが、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])
More Answers (0)
See Also
Categories
Find more on 内挿 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!