2012-11-25 149 views
0

可能重複:
Precision of multiplication by 1.0 and int <=> float conversion差異在犰狳乘法

我使用的犰狳C++庫線性和因與取得一致的結果的困難。當我打印vector,freq時,這些是正確的值,但是當我將它與標量值相乘時,這是錯誤的。即使使用freq * 1.0!任何建議都會很棒。

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

您可以將代碼放在乘法和存儲之後打印出來嗎? – rutgersmike

+0

我試過兩種方法: mat :: fixed <621,1> freq cout << 2.0 * arma :: datum :: pi * freq << endl; 和,我也打印它使用mat w = 2.0 * arma :: datum :: pi * freq; w.print()在不同的運行中給出不同的值。 –

+0

在計算中使用它之前,你正在初始化'freq'嗎?否則,它是垃圾。 – rutgersmike

回答

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; 
    } 

順便說一句,google搜索的matlab2arma()函數(在評論的問題提到的)顯示由第三方做一個黑客。將固定大小的矩陣與任何涉及手動內存管理的黑客混合可能會導致問題。除非你知道你在做什麼,否則不要修改內部的Armadillo指針。