Привет Я переписываю скрипт из MATLAB в C++, используя armadillo
библиотеку для линейной алгебры и матрицы.matlab и C++ precision
для получения более или менее тот же результат, я назвал соиЬ метод:
cout.precision(4);
cout.setf(ios::fixed);
, но я получаю различный результат:
Matlab результат:
0.0000 0.0000 0.0000 0.0000 0.0000
0.0012 0.0014 0.0016 0.0020 0.0281
0.0396 0.0297 0.0297 0.0495 0.0976
Armadillo C++ результат:
0.0000 0.0000 0.0000 0.0000 0.0000
0.0012 0.0014 0.0016 0.0020 0.0282
0.0416 0.0312 0.0312 0.0520 0.1027
сейчас, я не знаю, если thoose мало неточностей (0.039
находится рядом с 0.041
) вызваны некоторыми ошибками в моем C++ кода или перевод их следует рассматривать как нормальные различия между двойной точностью в г ++ и MATLAB
В моем коде Я использую много цикла, как это:
xi_summed = xi_summed + normalise((trans % (alpha.col(t) * b.t())));
где xi_summed
, trans
, alpha
, b
являются arma::mat
и %
является поэлементно умножением и mat::t()
является транспонировать и нормализуют являются функциями, которые делают записи о м atrix A
Сумма массива до 1
.
определенно не выглядит нормальным для меня. – WeaselFox
Покажите нам, пожалуйста, код. –
Я tring, чтобы переписать некоторую функцию инструментария HMM, и есть более 500 строк кода C++. я не знаю, что сообщение строки, потому что я не знаю, где ошибка должна быть – nkint