最近项目需要用C语言实现简单的矩阵运算便自己编写了,具体代码和测试结果如下:
LSTM.h文件的声明:
#ifndef _LSTM_H_
#define _LSTM_H_
//定义矩阵结构体,包含矩阵元素和行、列数,矩阵的元素按行平铺展开(第一行最后一个元素接第二行第一个元素)。
struct matrix {
double* M;
int row;
int column;
};
void matrix_printf(matrix a); //矩阵输出
matrix matrix_mul(matrix a, matrix b);//矩阵乘法a*b
matrix matrix_add(matrix a, matrix b);//矩阵加法
#endif // !_LSTM_H_#pragma once
LSTM.c文件中的定义:
#include "LSTM.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//矩阵输出
void matrix_printf(matrix a) {
int i = 0, j = 0;
for (i = 0; i <(a.row*a.column); i++)
{
printf("%lf ",*(a.M+i));
if((i+1)%a.column==0)
printf("\n");
}
}
//矩阵乘法a*b
matrix matrix_mul(matrix a, matrix b) {
int i,l;
int s1 = 0, s2 = 0;
matrix c;
if (a.column != b.row)
{
printf(