当前位置:网站首页>1. C language matrix addition and subtraction method

1. C language matrix addition and subtraction method

2022-07-06 13:26:00 It's Wang Jiujiu

Catalog

1. principle

2. Function writing ( Array form and pointer form )

Array form :

Pointer form :

1. principle

The conditions that matrix addition needs to meet : Two added matrices need to keep the same dimension , Matrix A+B,A The line of 、 Column =B The line of 、 Column .

Principle of addition and subtraction : The principle of matrix addition is very simple , Add or subtract the corresponding position .

for example :

2. Function writing ( Array form and pointer form )

Because the addition and subtraction method is relatively simple , So just use two for Loop through the entire array , Add or subtract the corresponding bit , Here is an example of addition .

At the beginning of the function, you need to use assert Assert whether the condition holds , If not, the system will prompt an error ,assert Need to include header file <assert.h>, If there is no judgment , After passing in the wrong parameter , The access of two-dimensional array will overflow .

Because the array parameter passes the address , So the type of the function is set to void that will do .

Array form :

// Define the rows and columns of the matrix 
#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3

#include<stdio.h>
#include<assert.h>

// Array form 
void Matrix_addition(double arr1[][COL1], double arr2[][COL2], double arr3[][COL1],int row1, int col1,int row2,int col2)
{
	assert(row1 == row2 && col1 == col2);// The dimension of the judgment matrix is consistent 
	int i = 0;
	int j = 0;
	for (i = 0; i < row1; i++)
	{
		for (j = 0; j < col1; j++)
		{
			arr3[i][j] = arr1[i][j] + arr2[i][j];
		}
	}

}
int main()
{
	double arr1[ROW1][COL2] = {0};
	double arr2[ROW1][COL2] = {9,8,7,6,5,4,3,2,1};
	double arr3[ROW1][COL1] = { 0 };
	Matrix_addition(arr1, arr2, arr3, ROW1, COL1,ROW2,COL2);
	return 0;
}

Pointer form :

// Define the rows and columns of the matrix 
#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3

#include<stdio.h>
#include<assert.h>

// Pointer form 
void Matrix_addition(double (*arr1)[COL1], double (*arr2)[COL2], double (*arr3)[COL1], int row1, int col1, int row2, int col2)
{
	assert(row1 == row2 && col1 == col2);// The dimension of the judgment matrix is consistent 
	int i = 0;
	int j = 0;
	for (i = 0; i < row1; i++)
	{
		for (j = 0; j < col1; j++)
		{
			*(*(arr3 + i) + j) = *(*(arr1 + i) + j) + *(*(arr2 + i) + j);
		}
	}
}

int main()
{
	double arr1[ROW1][COL2] = {0};
	double arr2[ROW1][COL2] = {9,8,7,6,5,4,3,2,1};
	double arr3[ROW1][COL1] = { 0 };
	Matrix_addition(arr1, arr2, arr3, ROW1, COL1,ROW2,COL2);
	return 0;
}

Both forms can , There's no difference in nature , Use it according to your preferences . use define Define the rows and columns of the array , The advantage is flexibility , Easy to use , Subsequently, you only need to change the relevant parameters of the input matrix to perform the operation .

Matrix multiplication is slightly more difficult than addition ,C Linguistic matrix multiplication There is a detailed explanation of .

原网站

版权声明
本文为[It's Wang Jiujiu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916176429.html