Октавные функции - PullRequest
0 голосов
/ 27 мая 2020

Я загрузил « функции сглаживания данных » из Octave forge , и я думаю, что это здорово помогло, но мне нужно в чем-то убедиться . выполняет ли эта функция "rgdtsmcore" сглаживание, взяв обратное двухточечное среднее ? Если нет, как мне изменить его, чтобы он стал таким?

Код:

function out = rgdtsmcorewrap (log10lambda, x, y, d, mincell, varargin)

  if (nargin < 5)
    print_usage;
  endif

  lambda = 10^(log10lambda);

  if ( length(mincell) == 2 ) # using stdev to find optimal lambda
    stdev = mincell{2};
    yhat  = rgdtsmcore (x, y, d, lambda, varargin{:});

    xhatprov = 0;
    relative = 0;
    for i = 1:length(varargin)
      if strcmp(varargin{i},"relative")
        relative = 1;
      elseif strcmp(varargin{i},"xhat")
        xhatprov = 1;
        xhat = varargin{i+1};
      endif
    endfor

    if (xhatprov)
      idx = interp1(xhat,1:length(xhat),x,"nearest");
      if relative
        stdevd = std((y-yhat(idx))./y);
      else
        stdevd = std(y-yhat(idx));
      endif
    else
      if (relative)
        stdevd = std((y-yhat)./y);
      else
        stdevd = std(y-yhat);
      endif
    endif

    out = (stdevd - stdev)^2;

  else # use gcv to find optimal lambda
    [yhat, out] = rgdtsmcore (x, y, d, lambda, varargin{:});
  endif

endfunction

Заранее спасибо ...

1 Ответ

0 голосов
/ 29 мая 2020

Полагаю, вы имеете в виду усреднение между текущей точкой и одной точкой до

t=pi*[0:.01:1];
x=sin(t)+rand(size(t))*.1; # data
y=zeros(size(x));
y(2:end)=(x(1:end-1)+x(2:end))/2; # 2 points average

subplot(3,1,1)
plot(t,x)
subplot(3,1,2)
plot(t,y)
subplot(3,1,3)
plot(t,x,t,y)

enter image description here

Конечно, для первой точки нет среднего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...