Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - 日本語


lsq_splin

重み付き最小二乗三次スプラインフィッティング

呼び出し手順

[y, d] = lsq_splin(xd, yd, x)
[y, d] = lsq_splin(xd, yd, wd, x)

パラメータ

xd, yd

同じ大きさのベクトル, 3次スプラインによりフィッティング するデータ

wd

(オプション) xd および ydの形式のベクトルで, 最小二乗フィッティングの重み.

x

単調増加の (行または列) ベクトル, 3次スプラインの折点

y, d

xと同じ大きさのベクトル, 近似3次スプラインを定義する組(x,y,d).

説明

この関数は,データxd, yd, wd (以下では,mをこれらのベクトルの長さと 仮定します)および スプライン折点x (例えばn個の等間隔折点を選択したい場合には x=linspace(min(xd),max(xd),n))とする ことができます) に関して 近似3次スプラインsを計算します. Sを折点 x1 < x2 < ... < xnを指定する あらゆる3次スプライン関数の空間とする場合, 得られるスプライン sは次のようになります:

∑_k=1→m wd(k).[s(xd(k))-yd(k)]² ⬅ ∑_k=1→m wd(k).[f(xd(k))-yd(k)]²

ただし,fはSの中の任意の値. すなわち,Sの任意の関数について, 二乗誤差の合計を最小化します.

スプラインsは 組(x,y,d)により完全に定義されます (y および d は,xiにおけるスプライン座標および1階微分のベクトル です : yi=s(xi) および di=s'(xi)) . 何らかの点における評価は, interp関数で行います.

注意

wdが指定されない場合, 全ての点は 同じ重み1を有します.

xd(k) が [x1,xn] の範囲で,wd(k) > 0の場合, 点 (xd(k),yd(k)) は, フィットの範囲にあるとみなされます. 特に, フィッティングにおいて無視したいデータ点に重み0 (または負の重み) を設定することができます. フィット処理が適用される点の総数が4個未満の場合, エラーが発生します.

ベクトル xd は昇順である必要は ありません.

数,xd(k)の位置, x(i)の選択に基づき いくつかの解が存在しますが, 選択できるのは1つだけです. この場合,Scilabコマンドウインドウに警告メッセージが 発生します. この関数は,mnよりも はるかに大きい場合に使用されることを意図しています. このような場合,このような問題は発生しません.

// これは人工的な例で,データxdおよびydは
// 外乱付きのsin関数から構築されます
a = 0; b = 2*%pi;
sigma = 0.1;  // ガウスノイズの標準偏差
m = 200;       // 試行点の数
xd = linspace(a,b,m)';
yd = sin(xd) + grand(xd,"nor",0,sigma);
n = 6; // 折点の数
x = linspace(a,b,n)';
// スプラインを計算
[y, d] = lsq_splin(xd, yd, x);  // 等しい重みを使用
// プロット
ye = sin(xd);
ys = interp(xd, x, y, d);
clf()
plot2d(xd,[ye yd ys],style=[2 -2 3], ...
       leg="exact function@experimental measures (gaussian perturbation)@fitted spline")
xtitle("a least square spline")
show_window()

参照

  • backslash — (\) 左行列除算: exact or least square solution
  • datafit — Non linear (constrained) parametric fit of measured (weighted) data
  • interp — 3次スプライン評価関数
  • splin — 3次スプライン補間
Report an issue
<< linear_interpn Interpolation mesh2d >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:36:18 CEST 2023