矩阵到向量C ++

时间:2016-05-05 12:49:14

标签: c++ algorithm matrix

我正在使用C ++ 我有以下矩阵:

{1,2,3,4,5}
{6,7,8,9,10}
{11,12,13,14,15}
{16,17,18,19,20}
{21,22,23,24,25}

我想将矩阵转换为5个vectros如下:

a[5] = {1,6,11,16,21};
b[5] = {2,7,12,17,22};
c[5] = {3,8,13,18,23};
d[5] = {4,9,14,19,24};
e[5] = {5,10,15,20,25};

我想将每个矩阵列转换为矢量 我有代码,需要5个向量并将其转换为矩阵:

typedef int *pInt;
//Each element of arr is a int-type pointer
 pInt arr[5] = {a, b, c, d, e};

 int matrix[5][5] = {0};
 for(int i = 0; i < 5; ++i){
     for(int j = 0 ; j < 5; ++j){
         matrix[i][j] = arr[j][i];
     }
 }

那么如何将矩阵转换为向量?

3 个答案:

答案 0 :(得分:1)

如果我说对了 对于每个i(行),您将填充不同的数组。像这样:

for(int i = 0; i < 5; ++i)
{
    for(int j = 0 ; j < 5; ++j)
    {
        if(i == 0)
        {
            //fill the first vector
        }
    }
}

答案 1 :(得分:1)

以下代码完成工作:

# Paginate through todo
def view_todos(page=1):
    paginated_todos = Todo.objects.paginate(page=page, per_page=10)

您正在通过int n=5; int** vec = new int*[n]; for(int j=0;j<n;j++){ vec[j] = new int[n]; for(int i=0;i<n;i++){ vec[j][i] = matrix[i][j]; } } for(int i=0;i<n;i++){ cout<<"Vector: "<<i<<endl; for(int j=0;j<n;j++){ cout<<vec[i][j]<<" "; } cout<<endl; } 创建整数指针数组 这里,vec [j]将代表j th 向量(int** vec = new int*[n])并由array创建

答案 2 :(得分:1)

我知道您要求代码从矩阵转换为向量,然后将这些新向量转换为翻转矩阵,但您可以一步完成整个过程。

int n = 5;
int vec[n][n];
for(int i = 0; i < n; ++i)
{
    for(int j = 0; j < n; ++j)
    {
        vec[i][j] = matrix[j][i];
    }
}

因为你只想让行成为新矩阵中的列,所以你要做的就是交换行和列迭代器(即矩阵的标准符号是矩阵[row] [column],所以上面的代码遍历vec的第一行,因为它也遍历第二个矩阵的第一列,创建你想要的反转)

另请注意,虽然这些是数学中的矩阵和向量,但您使用的实际数据结构是数组和二维数组(或数组数组)。