旋转3x3矩阵

时间:2014-08-30 04:32:39

标签: c++ matrix-multiplication

任何人都可以通过将我的3x3矩阵乘以另一个矩阵(矩阵乘法)来帮助我旋转它。矩阵来自vector.txt文件。我需要帮助在矩阵乘法方面旋转这个矩阵。

我只是一名学生,如果我的代码不好,请耐心等待。

这是我们之前的要求,但我无法得到它,但我想学习如何做到这一点。

#include<iostream>
#include<conio.h>
#include <stdio.h>

using namespace std;

void main() {
    cout << "Loading vector.txt" << endl;
    FILE *file = fopen("vector.txt", "r");
    int vector[3];
    int b = 0;

    do {
        fscanf(file, "%i", &vector[b]);
        b++;
    } while (feof(file) == 0);

    //clear the screen.
    fclose(file);

    cout << "Loading matrix" << endl;

    int a[3][3] = {}, y, x;
    for (int y = 0; y < 3; y++) {
        for (b = 0; b < 3; b++)
            a[0][y] = vector[y];
    }

    //Display the original matrix
    for (y = 0; y < 3; y++) {
        for (x = 0; x < 3; x++) {
            cout << a[y][x] << " ";
        }
        cout << endl;
    }

    //Scale by two
    cout << "Scale of original matrix is: " << endl;
    for (y = 0; y < 3; y++) {
        for (x = y * 4; x < 3; x++) {
            cout << a[y][x] * (2) << endl;
        }
    }

    //Display the transpose matrix
    cout << "Transpose of original matrix is: " << endl;
    for (x = 0; x < 3; x++) {
        for (y = 0; y < 3; y++) {
            if (a[y][x] != 0)
                cout << a[y][x] << " ";
        }
        cout << endl;
    }

    getch();
}

1 个答案:

答案 0 :(得分:1)

您的计划可以在很多地方得到改善。但是,我将集中讨论您在问题第一行中提出的问题:

  

任何人都可以通过将我的3x3矩阵乘以另一个矩阵来帮助我旋转它吗

问题:

您的函数中只有一个矩阵a

  1. 您需要第二个矩阵来执行矩阵乘法。
  2. 您需要第三个矩阵来存储乘法结果。
  3. 让我们说你想出来:

    int b[3][3];
    int c[3][3];
    

    并想要计算c = a * b

    你需要一个嵌套的for循环来计算矩阵乘法。

    for ( int i = 0; i < 3; ++i )
    {
      for ( int j = 0; j < 3; ++j )
      {
         c[i][j] = 0;
         for ( int k = 0; k < 3; ++k )
         {
            c[i][j] += a[i][k]*b[k][j];
         }
      }
    }