我有
vector < vector < int > > data_mat ( 3, vector < int > (4) );
vector < int > data_vec ( 3 );
其中data_mat
可以被视为一个矩阵,data_vec
被视为一个列向量,我正在寻找一种方法来计算data_mat
的每一列与data_vec
的内积,并将其存储在另一个vector < int > data_out (4)
中。
例如,使用for_each
和transform
的示例http://liveworkspace.org/code/2bW3X5%241,可用于计算矩阵的列和:
sum=vector<int> (data_mat[0].size());
for_each(data_mat.begin(), data_mat.end(),
[&](const std::vector<int>& c) {
std::transform(c.begin(), c.end(), sum.begin(), sum.begin(),
[](int d1, double d2)
{ return d1 + d2; }
);
}
);
是否有可能以类似的方式(或使用STL函数的稍微不同的方式)计算矩阵列与向量的列点积?
问题在于,“d2 = d1 + d2”技巧在列内积情况下不起作用——如果有一种方法也包括d3,那么问题就解决了(d3 = d3 + d1 * d2),但是在transform中似乎不存在三元函数。
inner_product
? - Peter Wood