Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português -

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> Interpolation > lsq_splin

lsq_splin

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

呼び出し手順

[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は次のようになります:

ただし,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()

参照

  • interp — 3次スプライン評価関数
  • splin — 3次スプライン補間

作者

  • C. De Boor, A.H. Morris (code from the NSWC fortran lib)
  • B. Pincon (scilab interface and slight modifications)
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Mar 03 11:00:53 CET 2011