当前位置:网站首页>1.C语言矩阵加减法
1.C语言矩阵加减法
2022-07-06 09:19:00 【是王久久阿】
目录
1.原理
矩阵加法需要满足的条件:两个相加的矩阵需要保持维度一致,即矩阵A+B,A的行、列=B的行、列。
加减法原理:矩阵加法的原理很简单,对应位置加减即可。
例如:
2.函数编写(数组形式和指针形式)
因为加减法比较简单,所以只需要利用两个for循环遍历整个数组,将对应位想加减即可,这里用加法举例。
在函数开头需要利用assert断言条件是否成立,如果不成立系统会提示报错,assert需要包含头文件<assert.h>,如果不进行判断,传入错误的参数后,二维数组的访问会溢出。
因为数组传参传的是地址,所以函数的类型设置为void即可。
数组形式:
//定义矩阵的行列
#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3
#include<stdio.h>
#include<assert.h>
//数组形式
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);//判断矩阵维数一致
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;
}
指针形式:
//定义矩阵的行列
#define ROW1 3
#define COL1 3
#define ROW2 3
#define COL2 3
#include<stdio.h>
#include<assert.h>
//指针形式
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);//判断矩阵维数一致
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;
}
两种形式均可,本质上没有任何差别,根据自己喜好来使用即可。用define定义数组的行列,优点就是灵活,方便使用,后续只需要更改输入矩阵的相关参数即可进行运算。
矩阵乘法相对于加法略有难度,C语言矩阵乘法一文中有详细讲解。
边栏推荐
- 165. Compare version number - string
- Shortest Hamilton path (pressure DP)
- Branch and loop statements
- View UI Plus 发布 1.3.0 版本,新增 Space、$ImagePreview 组件
- Fundamentals of UD decomposition of KF UD decomposition [1]
- Tyut Taiyuan University of technology 2022 introduction to software engineering summary
- Record: newinstance() obsolete replacement method
- 错误:排序与角标越界
- Rt-ppp test using rtknavi
- Design a key value cache to save the results of the most recent Web server queries
猜你喜欢
面渣逆袭:Redis连环五十二问,三万字+八十图详解。
Ten minutes to thoroughly master cache breakdown, cache penetration, cache avalanche
Record: the solution of MySQL denial of access when CMD starts for the first time
Decomposition relation model of the 2022 database of tyut Taiyuan University of Technology
Database operation of tyut Taiyuan University of technology 2022 database
Summary of multiple choice questions in the 2022 database of tyut Taiyuan University of Technology
2年经验总结,告诉你如何做好项目管理
13 power map
IPv6 experiment
XV Function definition and call
随机推荐
View UI Plus 發布 1.3.1 版本,增强 TypeScript 使用體驗
RTKLIB: demo5 b34f. 1 vs b33
IPv6 experiment
How to ensure data consistency between MySQL and redis?
Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
2-year experience summary, tell you how to do a good job in project management
Inheritance and polymorphism (I)
arduino+DS18B20温度传感器(蜂鸣器报警)+LCD1602显示(IIC驱动)
Introduction pointer notes
Counter attack of flour dregs: redis series 52 questions, 30000 words + 80 pictures in detail.
初识C语言(下)
初识C语言(上)
(ultra detailed onenet TCP protocol access) arduino+esp8266-01s access to the Internet of things platform, upload real-time data collection /tcp transparent transmission (and how to obtain and write L
阿里云一面:并发场景下的底层细节 - 伪共享问题
9.指针(上)
One article to get UDP and TCP high-frequency interview questions!
分支语句和循环语句
错误: 找不到符号
Atomic and nonatomic
阿里云微服务(一)服务注册中心Nacos以及REST Template和Feign Client