matlab 卷积公式与矩阵实现
其实是很简单的代码,叫了翔哥给代码给我改,果断将JAVA改成C++,太简单了。。
我不知道代码是什么意思,贴个记录先。

//matrix multiple opr #include <stdio.h> #include <iostream> using namespace std; #define maxn 500 int n , m , a, b , r , s , A1[maxn][maxn]; int A[maxn][maxn],B1[maxn][maxn] ,B[maxn][maxn]; int R[maxn][maxn]; void conv2() { int e = 0; for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { for(int k=0;k<r;k++) { for(int p=0;p<s;p++) { if(i-k >= 0 && j-p >=0) e = e + A1[k][p] * B1[i-k][j-p]; else if(i-k<0 && j-p>=0) e = e + A1[k][p] * B1[i-k+r][j-p]; else if(i-k>=0&&j-p<0) e = e + A1[k][p] * B1[i-k][j-p+s]; else e = e + A1[k][p] * B1[i-k+r][j-p+s]; } } R[i][j] = e; e = 0; } } } main() { puts("请输入矩阵A的行数与列数\n"); scanf("%d %d",&m,&n); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) scanf("%d",&A[i][j]); } puts("请输入矩阵B的行数与列数:"); scanf("%d %d",&a,&b); for(int i=0;i<a;i++) { for(int j=0;j<b;j++) { scanf("%d",&B[i][j]); } } r = m + a -1 ; s = n + b - 1; for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { if(i<m && j<n) A1[i][j] = A[i][j]; else A1[i][j] = 0; } } for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { if(i<a && j<b) B1[i][j] = B[i][j]; else B1[i][j] = 0; } } conv2(); for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { printf("%d ",R[i][j]); } printf("\n"); } scanf("%d",&A[0][0]); } /* 5 5 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 3 3 1 2 1 0 2 0 3 1 3 */
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步