нужно перенести алгоритм dtw в R с помощью Rccp

510
29 декабря 2016, 07:59

В R есть пакет с dtw алгоритмом но он очень медленный, я решил его заменить на dtw который написан на с++ от сюда . Скажу сразу, я только изучаю програмирование и R мой первый язык, с другими языками я не знаком и с с++ в частности тоже, так что не удивляйтесь если я чего то не понимаю, даже если ето что то очень тривиальное...

Все что мне нужно от функции это чтоб она принимала на вход два вектора произвольной длинны и на выходе давала евклидову дистанцию между этими векторами те меру близости, и все.. максимально быстро и максимально коротко

Итак взял я код из выше указанной ссылки и попробовал его интегрировать в R с помощью Rccp Но не заработало, мне кажется что в начале как то не правильно объявляться переменные и их типы

#include <Rcpp.h>
using namespace Rcpp;


DEFUN_DLD (dtw3, args, , "Find DTW of two signals with window")
{
  int nargin = args.length();
  if (nargin != 2)
    print_usage();
  Matrix A = args(0).array_value();
  Matrix B = args(1).array_value();
  octave_stdout << "Size of A is " << A.length() << std::endl;;
  octave_stdout << "Size of B is " << B.length() << std::endl;
  if (! error_state)
    {
      octave_idx_type n = A.length();
      octave_idx_type m = B.length();
      Matrix results (n + 1, m + 1);
      for(octave_idx_type i = 0; i <= n ; i++)
        for(octave_idx_type j = 0; j <= m ; j++)
          results(i, j) = octave_Inf;
      results(0, 0) = 0;
      octave_idx_type win = abs (n-m);
      double cost = 0;
      for(octave_idx_type i = 1 ; i <= n ; i++)
        for(octave_idx_type j = std::max(1, i-win) ; j <= std::min(m, i+win) ; j++)
          {
            cost = abs(A(i-1) - B(j-1));
            results(i, j) = cost + std::min(std::min(results(i-1,j),results(i,j-1)),results(i-1,j-1));
          }
      //octave_stdout << results << std::endl;
      return ovl(results(n, m));
    }
}

Подскажите пожалуйста что нужно изменить в этом коде?

READ ALSO
Code-review программы для работы с заметками

Code-review программы для работы с заметками

ЗдравствуйтеЯ пишу небольшую программку для работы с заметками

488
Импорт csv в mysql

Импорт csv в mysql

Хочу, чтобы при импорте из csv к каждой записи добавлялось поле "время добавления"Думал сделать по аналогии, как при обычном запросе и добавить...

592
LEFT JOIN нескольких таблиц выдаёт дубликаты

LEFT JOIN нескольких таблиц выдаёт дубликаты

Делаю билинговую систему к торговой интернет-площадкеВ таблицах tbl_user - пользователи, tbl_billing_refill - пополнения баланса, tbl_billing - покупки/продажи...

596
Scroll к элементу

Scroll к элементу

У меня есть расписание на экранеНадо, чтобы по нажатию кнопки осуществлялся ScrollTo() либо ScrollBy() к элементу, но я не знаю, как определять координаты...

450