Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

data structures
matrix
identity matrix
communitycreator

How to generate an identity matrix given the dimensions?

abhilash

Problem statement

Given the number of rows and columns, generate a 2D identity matrix for the given dimensions.

Example 1:

  • Input - (3, 3)
  • Output Matrix
{{1,0,0},
 {0,1,0},
 {0,0,1}}
  • Input - (3, 4)
  • Output - Cannot generate an identity matrix as the given dimensions are not equal.

What is an identity matrix?

An identity matrix or a unit matrix is a square matrix that has principal diagonal elements. This means that the elements from the upper left corner to the bottom right corner along the diagonal are ones, and other elements in the matrix are zero.

For example:

{{1,0,0},
 {0,1,0},
 {0,0,1}}

The example above is a 3x3 identity matrix.

Algorithm

  1. Check if the given dimensions are equal. If the dimensions are not equal, then an identity matrix can’t be generated
  2. Create a 2D matrix with the given dimensions
  3. Run two loops. One loop is iterating along the rows, and the other loop is iterating along the columns. During the iteration, execute the following steps
    1. When the row number is equal to the column number, set the element at that location to 1
    2. When the row number is not equal to the column number, set the element at that location to 0.

The pseudo-code is as follows:

1. if numRows != numCols then print("Can't Generate Matrix") return;
2. Define matrix[numRows][numCols]
3. for i from 0 to numRows-1
     do
       for j from 0 to numCols-1
         do
           if i equal to j then
              set matrix[i][j] = 1
           else
              set matrix[i][j] = 0
         done
     done
i=0, j=0; i == j; Hence, set the value to 1
1 of 4

Code

import java.util.Arrays;

public class Main{

    private static int[][] generateIdentityMatrix(int numRows, int numCols){
        int[][] identityMatrix = new int[numRows][numCols];
        for(int i=0; i < numRows;i++)
            for(int j=0; j < numRows;j++){
                if(i == j) identityMatrix[i][j] = 1;
                else identityMatrix[i][j] = 0;
            }
        return identityMatrix;
    }

    private static void printMatrix(int[][] matrix){
        for (int[] row : matrix)
            System.out.println(Arrays.toString(row));
    }

    public static void main(String[] args){
        int numRows = 3;
        int numCols = 3;
        if(numRows != numCols){
            System.out.println("Cannot generate an identity matrix as the given dimensions are not equal");
        } else{
            int[][] identityMatrix = generateIdentityMatrix(numRows, numCols);
            System.out.printf("The generated matrix for the (%d, %d) dimension is - \n", numRows, numCols);
            printMatrix(identityMatrix);
        }
    }
}

RELATED TAGS

data structures
matrix
identity matrix
communitycreator
RELATED COURSES

View all Courses

Keep Exploring