0

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 の使用方法に誤りはありますか?

4

1 に答える 1