如何乘以一个4x4矩阵与C中的1x3矩阵?

如果你已经有一个4x4的矩阵。 防爆。

Matrix A = [1 2 3 4;
            5 6 7 8;`
            9 10 11 12;
            13 14 15 16]

Matrix B = [1, 2, 3]

你如何将矩阵A转换为C编码? 还有什么位置在代码中? 对于位置我的意思是:如果我试图将第一行乘以矩阵B,我可以这样做吗?

A[1][0]*B[0]+A[1][1]*B[1]+A[1][2]*B[2]

大纲代码:

main(){

    int matrixA[4][4] = [{"1","2","3","4"};
                        {"5","6","7","8"};
                        {"9","10","11","12"};
                        {"13","14","15","16"}];
    printf(matrix A);
    return 0;
}

首先,你不能用4×4矩阵乘1×3矩阵。 你应该有像m×n和n×p这样的矩阵使它们相乘(结果将是一个m×p矩阵)。

对于C语言中的4×4矩阵,你应该像这样实现它:

int main()
{
    int mat[4][4];
    for(int i=0;i<=3;i++)
    {
        for(int j=0;j<=3;j++)
        {
            scanf("%d", &mat[i][j]);
        }
    }

    return 0;
}

据我所知,你想制作一个程序来执行与矩阵相关的数学分数。 线性代数中的例子。 矩阵大小没有被检查,但你明白了。 在划分中,您必须对Array2 ^ -1进行计算才能找到它。 希望我帮助。 找到它后,将结果乘以Array1。 然而在分区中,事情更复杂。 您需要以不同的方式处理您的编码,具体取决于您拥有的阵列(矩阵)尺寸。 必须包括例外情况,需要阅读关于如何划分这些矩阵的一些理论。 有关更多详细信息,请参阅https://en.wikipedia.org/wiki/Division_(mathematics)。

#include <stdio.h>
#include <math.h>
int main(){
//counters
int i=0,j=0,k=0,sum=0;
//first array
int Array1[4][4] ={
        {87,96,70,22},
        {18,65,77,78},
        {76,72,84,65},
        {87,93,73,77}};
//second array
int Array2[4][4]={
        {14,45,66,88},
        {45,32,97,44},
        {34,64,23,66},
        {39,98,55,32}};
//result array.
int ResultArray[4][4];
// Add
for (i = 0; i < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        ResultArray[i][j]= Array1[i][j]+Array2[i][j];
    }
}
//result
printf("tAdd Array1 and Array2n");
for (i = 0; i < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        printf(" %10d t",ResultArray[i][j]);
    }
    printf("n");
}
//subtract
for (i = 0; i < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        ResultArray[i][j]= Array1[i][j]-Array2[i][j];
    }
}
//result
printf("tSubtract Array1 and Array2n");
for (i = 0; i < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        printf(" %10d t",ResultArray[i][j]);
    }
    printf("n");
}
//multiply
for (i = 0; i < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        for (k = 0; k < 4; ++k) {
            sum=sum+Array1[i][k]*Array2[k][j];
        }
        ResultArray[i][j]=sum;
        sum=0;
    }
}
//result
printf("tMultiplication Array1 and Array2n");
for (i = 0; i    < 4; ++i) {
    for (j = 0; j < 4; ++j) {
        printf(" %10d t",ResultArray[i][j]);
    }
    printf("n");
}
return 0;
}

你可以这样写:

int matrixA[4][4] = {
    { 1,  2,  3,  4},//matrixA[0][0] is 1
    { 5,  6,  7,  8},//matrixA[1][1] is 6
    { 9, 10, 11, 12},
    {13, 14, 15, 16}
};
int matrixB[] = { 1, 2, 3};
for(int r = 0; r < 4; ++r){
    for(int c = 0; c < 4; ++c){
        printf("%3d", matrixA[r][c]);
    }
    printf("n");
}
链接地址: http://www.djcxy.com/p/85991.html

上一篇: How to multiply a 4x4 matrix with a 1x3 matrix in C?

下一篇: OpenMP Performance Issues with Matrix Multiplication