- Aとx,yはどんなデータですか?
- どんなエラーが出ますか?
- Curve Fitting Toolboxは入っていますか?
Z軸情報のマトリクスから曲面近似を行う方法
6 ビュー (過去 30 日間)
古いコメントを表示
ある3次元データに対して,各点の高さ情報が入ったマトリクスAがあります.
このAから曲面近似を行いたいと思っています.
Aに沿うようにx座標,y座標の情報をいれたマトリクスx,yを作製し
Matlabヘルプを参考に以下のように書いてみたのですが,うまく動きませんでした.
sf = fit([x, y],A,'poly23')
どうしたら各点の高さ情報マトリクスから曲面近似ができるでしょうか?
ちなみに曲面はほぼ球面の一部となっています.
2 件のコメント
Atsushi Ueno
2021 年 10 月 28 日
load franke
size(x)
size(y)
size(z)
sf = fit([x, y],z,'poly23');
plot(sf,[x,y],z)
採用された回答
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])
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で 内挿 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!