How to multiply matrices in JavaScript

by Janeth Kent Date: 30-04-2021 javascript coding functions webdev


It may seem strange to want to know how to multiply matrices in JavaScript. But we will see some examples where it is useful to know how to perform this operation and how useful it is when handling coordinates as matrices, which we will see in a following article.

But let's go step by step and the first thing to do is to create a matrix in JavaScript. We have to know that an array is an array where each of the positions is an array of elements, for example numbers. In this way we can initialize an array in JavaScript as follows:

m1 = [[1,2,3],[4,5,6]];  
m2 = [[7,8],[9,10],[11,12]];

In order to understand what the columns and rows of the matrix would be, we will take into account that the elements of the main array are the rows and each of the elements of the internal array will be the columns. In this way the two arrays that we have instantiated in these lines of code would correspond to the matrices:

Matrix 2x3  
|1   2    3|    
|4   5   6|    

Matrix 3x2  
|7    8|  
|9   10|  
|11  12|

If we want to know how many rows and columns the matrix has, we can calculate it in the following way:

fil_m1 = m1.length;  
col_m1 = m1[0].length;    
fil_m2 = m2.length;  
col_m2 = m2[0].length;

We can see that the rows are obtained through the .length property of the array and the columns by asking the first element of the matrix, again with the .length property of the array.

This is very important because in order to be able to multiply matrices, the columns of the first matrix must be the same as the columns of the second matrix. We will make this check in the following way:

if (col_m1 != fil_m2)    
throw "Matrices cannot be multiplied";

The next step is to create the matrix with the result. The matrix will have a size equal to as many rows as matrix 1 as columns of matrix 2. So we create the matrix for the result of the multiplication as follows:

let multiplication = new Array(fil_m1);  
for (x=0; x<multiplication.length;x++)      
multiplication[x] = new Array(col_m2).fill(0);

We see that we first create an array and then for each element of the array we create a new element. We rely on the .fill() method that allows us to fill the array with a number. In this case we are going to initialise it to 0.

The next step is to perform the multiplication. To do this we go through the result matrix and in each x,y position we assign the result of multiplying each element of the row of the first matrix with each of the columns of the second matrix.

The scheme would be as follows

multiply matrices

And the code that implements it would be:

for (x=0; x < multiplication.length; x++) {      
for (y=0; y < multiplication[x].length; y++) {   
    for (z=0; z<col_m1; z++) {              
               multiplication [x][y] = multiplication [x][y] + m1[x][z]*m2[z][y]; 
               }      
    }  
}

In this way we will have managed to perform the multiplication and the result will be stored in the multiplication matrix. This way we will have managed to multiply matrices in JavaScript.

 
by Janeth Kent Date: 30-04-2021 javascript coding functions webdev hits : 3670  
 
Janeth Kent

Janeth Kent

Licenciada en Bellas Artes y programadora por pasión. Cuando tengo un rato retoco fotos, edito vídeos y diseño cosas. El resto del tiempo escribo en MA-NO WEB DESIGN END DEVELOPMENT.

 
 
 

Related Posts

What are React Hooks and what problems they solve

Working with React, - and before the release of Hooks in version 16.8 -  there was always the possibility to create components in three different ways based on a number of…

Flattening arrays in JavaScript

When we are handling arrays that are arrays or have multiple dimensions it can be very useful to know how to flatten arrays in JavaScript. That is to say, to…

How to populate an array with random numbers in JavaScript

Some of you might think that what we explained in the article on how to populate an array with numbers, apart from the didactic part, would not have much applicability…

How to populate an array with numbers in JavaScript

Populate an array with numbers in JavaScript The first step is to initialise the array. So today we are going to see a simple way to do it and see how…

Top Javascript Libraries and Frameworks Part 2

What are JavaScript frameworks?   JavaScript frameworks are application frameworks that allow developers to manipulate code to meet their particular needs. Web application development is like building a house. You have the option…

How to Send Email from an HTML Contact Form

In today’s article we will write about how to make a working form that upon hitting that submit button will be functional and send the email (to you as a…

Top JavaScript libraries and frameworks part 1

JavaScript libraries and frameworks make it easy to develop websites and applications with a wide variety of features and functionality, all with dynamic, flexible and engaging features. According to a 2020…

Looping through a matrix with JavaScript

We were already talking about how to multiply arrays in JavaScript and we realised that we had not explained something as simple as traversing an array with Javascript. So we…

JavaScript Formatting Date Tips

Something that seems simple as the treatment of dates can become complex if we don't take into account how to treat them when presenting them to the user. That is…

How to make a multilingual website without redirect

Today, we're going to talk about how to implement a simple language selector on the basic static website, without the need of any backend or database calls or redirection to…

Starting with Bootstrap-Vue step by step

Today we will show you how to use BootstrapVue, describe the installation process and show basic functionality. The project’s based on the world's most popular CSS framework - Bootstrap, for building…

Creating simple CSS spinner-loader

In today's article we will show you how to animate a basic loader that spins when some predefined action is defined, such as loading an image. That can be used…

We use our own and third-party cookies to improve our services, compile statistical information and analyze your browsing habits. This allows us to personalize the content we offer and to show you advertisements related to your preferences. By clicking "Accept all" you agree to the storage of cookies on your device to improve website navigation, analyse traffic and assist our marketing activities. You can also select "System Cookies Only" to accept only the cookies required for the website to function, or you can select the cookies you wish to activate by clicking on "settings".

Accept All Only sistem cookies Configuration