0

重複の可能性:
1.0による乗算の精度とint<=>浮動小数点変換

armadillo c ++線形ライブラリを使用していますが、一貫した結果を取得するのに問題があります。ベクトルfreqを出力するときは正しい値ですが、スカラー値を掛けると間違っています。freq * 1.0でも!どんな提案も素晴らしいでしょう。

mat::fixed<621,1>freq; 
2.0 * arma::datum::pi * freq
4

1 に答える 1

1

あなたの問題を再現できません。

問題を示す正確なスタンドアロン コードを投稿する必要があります。つまり、使用しているすべての機能。つまり、投稿したプログラムは、他の関数を使用せずに、Armadillo の依存関係のみを使用して (つまり、Matlab を使用せずに) コンパイルできることを意味します。

次のコードを使用すると、問題は発生しません。

#include <iostream>
#include "armadillo"

using namespace arma;
using namespace std;

int main(int argc, char** argv)
  {
  mat::fixed<621,1> freq;
  freq.ones();

  cout << 2.0 * arma::datum::pi * freq << endl;

  return 0;
  }

ところで、 matlab2arma() 関数 (質問へのコメントに記載) のグーグル検索は、サードパーティによるハッキングを示しています。固定サイズの行列と、手動のメモリ管理を伴うあらゆる種類のハックを混在させると、問題が発生する可能性があります。自分が何をしているのかわからない場合は、Armadillo の内部ポインタを変更しないでください。

于 2012-11-26T02:45:53.573 に答える