我想将阈值函数应用于一堆模糊值(浮点数):
template <typename Derived>
void Threshold(Eigen::ArrayBase<Derived>& params)
{
params = (params >= 0.0f).cast<float>();
}
我的想法是,我最终得到了一堆1和0(float
),其中曾经有模糊值。但是当我这样做时,我收到以下错误:
src / core / Neuron.h:在静态成员函数中'static void 神经元的阈值::(本征:: ArrayBase和放大器;)”: src / core / Neuron.h:119:43:错误:预期的primary-expression之前 'float'params =(params&gt; = 0.0f).cast(); ^ src / core / Neuron.h:119:43:错误:预期';'在'浮动'之前make: * [src / core / Cell.o]错误1
显然,我没有正确使用cast
方法。我查看了Documentation,它为cast
方法提供了以下原型:
internal::cast_return_type< Derived,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Derived>::Scalar, NewType>, const Derived> >::type cast () const inline
我真的不明白这意味着什么,但我猜我可能会错过模板参数?
答案 0 :(得分:1)
尝试:
params = (params >= 0.0f).template cast<float>();
这种用法基本上只是template
关键字的重载。在这里,它提示您尝试调用成员模板的编译器。有关详细信息,请参阅this。