2 つの valarray で多次元内積を実行しようとしています。つまり、各要素が入力 valarray の 2 つの行の内積になるように valarray を返します。
スライスを使用して、配列ごとに行に分割します。ドキュメントを確認すると、* は slice_array の演算子であると記載されており、* と同様に動作すると信じています。2 つの配列間で要素ごとの乗算を実行します。
valarray<float> mult(valarray<float> arr1, valarray<float> arr2, int row1, int mid, int col2)
{
valarray<float> new_arr;
new_arr.resize(row1*col2);
for (int i = 0; i < row1*col2; ++i)
{
slice s (i*mid,mid,1);
new_arr[i] = (arr1[s] * arr2[s]).sum();
}
return new_arr;
}
私が取得し続けるエラーは次のとおりです。
|12|error: no match for 'operator*' (operand types are 'std::slice_array<float>' and 'std::slice_array<float>')|
何が間違っているのかわかりません。独自の要素ごとの乗算関数を作成する前に、コードまたは slice_array の使用方法に誤りはありますか?