• 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的行数与列数
    "); 
        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("
    ");
        }
        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
    
    */
    View Code
  • 相关阅读:
    Hbase调用JavaAPI实现批量导入操作
    spring-quartz定时任务使用小结
    Cocos2d-x JSB 自己主动绑定bindings
    CentOS 6.x安装多GCC版本号,cmake的安装与使用
    PPAPI+Skia实现的涂鸦板
    UVA
    [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel
    文本分析之中文分词
    cocos2d-x创建精灵动画
    美国L1签证申请的常见问题解析
  • 原文地址:https://www.cnblogs.com/cton/p/3441637.html
Copyright © 2020-2023  润新知