将2D数组矩阵转换为单位矩阵c#

时间:2016-10-05 12:29:27

标签: c# arrays matrix

我应该创建一个按钮,将已经存在的2D数组矩阵转换为单位矩阵。显然,您需要确保原始矩阵中的列数和行数相同,以使其成为单位矩阵,但我对如何执行此操作感到有些困惑。

到目前为止,我有:

        private void btnMakeBIdentity_Click(object sender, EventArgs e)
    {
        double[,] identityMatrixB = new double[matrixBRows, matrixBCols];
        if(matrixBRows == matrixBCols)
        {
            identityMatrixB = IdentityMatrix(matrixBRows);
        }
        matrixB = identityMatrixB;

        matrixToString(matrixB, txtFullMatrixB);
    }

方法matrixToString:

        private double[,] IdentityMatrix(int n)
     {
        double[,] result = createMatrix(n, n);
        for (int i = 0; i < n; ++i)
            result[i,i] = 1.0;
        return result;
     }

在此代码中:matrixB,matrixBRows,matrixBCols都是该类的全局变量。 Matrix B是使用:

创建的
        private void btnCreateMatrixB_Click(object sender, EventArgs e)
    {
        try
        {
            matrixBRows = Convert.ToInt32(txtMatrixBRows.Text);
            matrixBCols = Convert.ToInt32(txtMatrixBCols.Text);

        }
        catch (Exception ex)
        {
            MessageBox.Show("Please check the textboxes for Matrix B's rows and columns. Be sure you are inputing a valid integer.");
        }

        matrixB = createMatrix(matrixBRows, matrixBCols);
        matrixToString(matrixB, txtFullMatrixB);


    }

创建Matrix B后给出的输出示例为:

8.3   10   5.2   
0.1   6.3   7.8   
7.6   1.3   1.1   
单击&#34;运行Matrix B标识&#34;运行IdentityMatrix后

我明白了:

1.0   10   5.2   
0.1   1.0   7.8   
7.6   1.3   1.0

任何帮助或建议都会很棒。谢谢!

1 个答案:

答案 0 :(得分:4)

你必须将其他元素设置为0.所以你可以这样做:

for (int i = 0; i < n; ++i) {
    for (int j = 0; j < n; ++j) {
        if (i == j)
            result[i,j] = 1.0;
        else result[i,j] = 0.0;
    }
}