C语言 计算矩阵外积(outer)

111 阅读1分钟

函数功能

计算矩阵外积

参数说明

  • inArr1:输入数组1
  • len1:数组1长度
  • inArr2:输入数组2
  • len2:数组2长度
  • outLenX:结果数组第一维长度
  • outLenY:结果数组第二维长度

代码

float* myOuter_float(float* inArr1, int len1, float* inArr2, int len2, int* outLenX, int* outLenY) {

//输入和输出为一位数组
//输入高维数组时按一位数组展开处理
float* returnArr = NULL;
int i = 0, j = 0;
int index = 0;
if (inArr1 == NULL || inArr2 == NULL) {
	printf("myOuter_float:\ninArr1 == NULL || inArr2 == NULL\n");
	return NULL;
}
returnArr = (float*)malloc(sizeof(float)*len1*len2);
if (returnArr == NULL) {
	printf("malloc失败\n");
	return NULL;
}

if (outLenX == NULL || outLenY == NULL) {
	printf("myOuter_float:\noutLenX == NULL || outLenY == NULL\n");
	return NULL;
}
*outLenX = len1;
*outLenY = len2;

for (i = 0;i<len1;i++) {
	for (j = 0;j<len2;j++) {
		returnArr[getIndexOfArr_2d(len1, len2, i, j)] = inArr1[i] * inArr2[j];
	}
}

return returnArr;

}