3次元点群(7000個程度)に対して曲面近似を行いたく、最小二乗法のプログラムを作成しました。
25次まで元のサイズを維持したままプロットできるのですが、26次以上にすると正しくプロットできません。
複数のブログ①②などを参考に独自に作成したのですがつまづいてしまい、ご助力いただきたいです。
また、その他3次元点群の形状の近似方法があればご提案頂けますと幸いです。
#汎用次元フィッティング関数 def func(param,x,y,z): sum = np.zeros_like(y) for i,j in zip(range(0,Degree-1,2),reversed(range((Degree+1)//2))): if j == 0: break else: sum = sum + np.array(param[i] * z ** (j)) + np.array(param[i+1] * y ** (j)) residual = x - sum-param[Degree-1] return residual # 次数の指定とパラメータの作成 Degree = 25 #例 param = [0] * Degree # 最小二乗法を実装 optimised_param = optimize.least_squares(func, param, args=(x, y, z)) #導出したパラメータによる近似式の実装 f=np.zeros_like(y) for i,j in zip(range(0,Degree-1,2),reversed(range((Degree+1)//2))): f = f + optimised_param.x[i]*z**j + optimised_param.x[i+1]*y**j f= f+optimised_param.x[Degree-1]
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/06 01:15 編集
2022/01/06 06:39
2022/01/06 07:14
退会済みユーザー
2022/01/06 10:02
2022/01/06 10:27
2022/01/06 11:24 編集
2022/01/07 01:47
2022/01/07 02:01