将`dlib::matrix<T>`转换为`dlib::matrix<S>`的好方法?
Good way to cast `dlib::matrix<T>` into `dlib::matrix<S>`?
将dlib::matrix<T>
转换成dlib::matrix<S>
有什么好方法?
例如,dlib::matrix<float>
变成 dlib::matrix<std::complex<float> >
?
编辑:
我正在寻找比这更有效的东西:
template <class T> void toComplex(const dlib::matrix<T>& matr, dlib::matrix<std::complex<T> >& res) {
res = dlib::zeros_matrix<std::complex<T> >(matr.nr(), matr.nc());
for (unsigned i = 0; i < matr.nr(); ++i) {
for (unsigned j = 0; j < matr.nc(); ++j) {
res(i,j) = std::complex<T>(matr(i,j), 0);
}
}
}
编辑2:
更清洁,但不是更快的解决方案(感谢 @idclev_463035818 的建议):
template <class T> void toComplex(const dlib::matrix<T>& matr, dlib::matrix<std::complex<T> >& res) {
res.set_size(matr.nr(), matr.nc());
std::copy(matr.begin(), matr.end(), res.begin());
}
什么演员至少需要
sizeof(float) == sizeof(std::complex<float>)
通常情况并非如此,因为虚部不放在虚部内存中。
您可以检查是否
<some code to resize res to matr without initializing anything>
std::copy(matr.cbegin(), matr.cend(), res.begin());
更快。
您想打电话给 complex_matrix(your_real_matrix)
。参见 http://dlib.net/dlib/matrix/matrix_math_functions_abstract.h.html#complex_matrix。还有各种类似的铸造套路。
将dlib::matrix<T>
转换成dlib::matrix<S>
有什么好方法?
例如,dlib::matrix<float>
变成 dlib::matrix<std::complex<float> >
?
编辑: 我正在寻找比这更有效的东西:
template <class T> void toComplex(const dlib::matrix<T>& matr, dlib::matrix<std::complex<T> >& res) {
res = dlib::zeros_matrix<std::complex<T> >(matr.nr(), matr.nc());
for (unsigned i = 0; i < matr.nr(); ++i) {
for (unsigned j = 0; j < matr.nc(); ++j) {
res(i,j) = std::complex<T>(matr(i,j), 0);
}
}
}
编辑2: 更清洁,但不是更快的解决方案(感谢 @idclev_463035818 的建议):
template <class T> void toComplex(const dlib::matrix<T>& matr, dlib::matrix<std::complex<T> >& res) {
res.set_size(matr.nr(), matr.nc());
std::copy(matr.begin(), matr.end(), res.begin());
}
什么演员至少需要
sizeof(float) == sizeof(std::complex<float>)
通常情况并非如此,因为虚部不放在虚部内存中。
您可以检查是否
<some code to resize res to matr without initializing anything>
std::copy(matr.cbegin(), matr.cend(), res.begin());
更快。
您想打电话给 complex_matrix(your_real_matrix)
。参见 http://dlib.net/dlib/matrix/matrix_math_functions_abstract.h.html#complex_matrix。还有各种类似的铸造套路。