% Exercise 1 : RBF1 demo
%   RBF1: mu, sigma fixed version of RBF

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Ndata　と　M　の値を変えて試して見よ
% 学習データ数
Ndata = 50;
% 基底の個数
M = 5;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step=2/(Ndata-1);

% 学習データ
x = -1:step:1;
y = abs( sin( x*2*pi ) );
y = y + randn( size(y) )*0.01;

% 基底中心の位置（デフォルト：等間隔）
mu = (0:(M-1))/(M-1) * 2 - 1;
% 基底標準偏差σ（デフォルト：中心分布レンジ/M )
%   σの値を大きくしたり小さくするとどうなるか？
range = max( max(mu)-min(mu) );
sigma = range/M;

% 最小二乗法によるパラメータ推定
a = RBF1learn( x, y, mu, sigma );

% 推定されたパラメータによる出力計算
yout = RBF1out( x, a, mu, sigma );

% プロット
RBF1plot( x,y(1,:),yout(1,:),mu,sigma );
