簡體   English   中英

將扁平矩陣乘以向量

[英]Multiply flatten matrix by a vector

我最初有一個扁平的 3x3 矩陣(所以現在我有一個 1D 數組,它在最初的 3x3 矩陣中逐行排列),我必須將它乘以一個 3x1 向量。 知道我該怎么做嗎? 我不確切知道如何進行迭代。 我正在使用 c++ 進行操作。

這是一個使用扁平矩陣的非常簡單的解決方案,並且沒有任何邊界檢查以保持簡單:

#include <iostream>
#include <vector>

struct matrix2d
{
    std::vector<float> v_;
    size_t x_, y_;
};

std::vector<float> mult3x3(const matrix2d &m, const std::vector<float> &v)
{
    std::vector<float> result;
    for (size_t i=0; i< m.y_; i++)
    {
        float r = 0.0;
        for (size_t j=0; j< m.x_; j++)
        r += m.v_[i*m.x_+j]*v[j];
        result.push_back(r);
    }
    return result;
}

int main()
{
    matrix2d m {.v_ = {1,2,3, 1,2,3, 1,2,3}, .x_=3, .y_=3};
    std::vector<float> v { 1,2,1};

    std::vector<float> result = mult3x3(m, v);
    for (size_t i=0; i< result.size(); i++)
        std::cout << result[i] << ", " << std::endl;
    return 0;
}

看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM