我有两个2D矩阵,由具有double
数据类型的元素组成。我想使用公式
value = | (a[i][j] - b[i][j]) | / ( 1 + a[i][j] + b[i][j] )
我的代码:
double ColorCorrelogram::correlogramMatching(double (&a)[Num_colorBin][Distance_Range] , double (&b)[Num_colorBin][Distance_Range])
{
for(int i=0; i<Num_colorBin; i++)
{
for(int j=0; j<Distance_Range; j++)
{
double value = ( (std::abs)( a[i][j] - b[i][j] ) ) / (1 + a[i][j] + b[i][j]);
cout<<"\n( "<<a[i][j] <<" and " <<b[i][j]<<" )"<<" gave "<<value<<" ";
}
}
return 0;
}
矩阵 - 1:
矩阵 - 2:
结果:
问题:
negative
时,结果中为什么某些值为 std::abs
。答案 0 :(得分:1)
您的代码格式为
((std::abs)(double))/double
而不是
(std::abs)(double/double)
和std :: abs不像类型转换那样工作。