精华内容
下载资源
问答
  • 例题 计算以下图像的离散傅里叶变换 f=[1441244224421441] f=\begin{bmatrix}1&...计算方式当然不是通过原始公式硬算,而是构造权值矩阵计算。 考虑二维DFT的分解: F(u,v)=∑x=0M−1∑y=0N−1f(x,y)e−

    例题

    计算以下图像的离散傅里叶变换
    f=[1441244224421441] f=\begin{bmatrix}1&4&4&1\\2&4&4&2\\2&4&4&2\\1&4&4&1\end{bmatrix}

    计算方式当然不是通过原始公式硬算,而是构造权值矩阵来计算。

    考虑二维DFT的分解:
    F(u,v)=x=0M1y=0N1f(x,y)ej2π(ux/M+vy/N)=x=0M1ej2πux/My=0N1f(x,y)ej2πvy/N=x=0M1ej2πux/MF(x,v) F(u,v)=\sum^{M-1}_{x=0}\sum^{N-1}_{y=0}f(x,y)e^{-j2\pi (ux/M+vy/N)}\\=\sum^{M-1}_{x=0}e^{-j2\pi ux/M}\sum^{N-1}_{y=0}f(x,y)e^{-j2\pi vy/N}\\=\sum^{M-1}_{x=0}e^{-j2\pi ux/M}F(x,v)
    注意到,对每一个xx,都有:
    F(x,v)=y=0N1f(x,y)ej2πvy/N F(x,v)=\sum^{N-1}_{y=0}f(x,y)e^{-j2\pi vy/N}
    因此,当N=4N=4时:
    F(x,0)=y=0N1f(x,y)F(x,1)=y=0N1f(x,y)ejπy/2F(x,2)=y=0N1f(x,y)ejπyF(x,3)=y=0N1f(x,y)ej3πy/2 F(x,0)=\sum^{N-1}_{y=0}f(x,y)\\F(x,1)=\sum^{N-1}_{y=0}f(x,y)e^{-j\pi y/2}\\F(x,2)=\sum^{N-1}_{y=0}f(x,y)e^{-j\pi y}\\F(x,3)=\sum^{N-1}_{y=0}f(x,y)e^{-j3\pi y/2}
    固定xx时,每个F(x,v)F(x,v)可视为f(x,y)f(x,y)这个行向量与相应的权值向量(列向量)的内积,如F(x,1)F(x,1)的公式中对应的权值向量就是[1j1j]\begin{bmatrix}1&-j&-1&j\end{bmatrix}

    因此构造权值矩阵AyA_y
    Ay=[11111j1j11111j1j] A_y=\begin{bmatrix}1&1&1&1\\1&-j&-1&j\\1&-1&1&-1\\1&j&-1&-j\end{bmatrix}

    同理可构造权值矩阵Ax=AyA_x=A_y,因此傅里叶变换为:
    F=AxfAy=[11111j1j11111j1j][1441244224421441][11111j1j11111j1j]=[441010j010+10j22j2j0200002+2j202j] F=A_xfA_y=\begin{bmatrix}1&1&1&1\\1&-j&-1&j\\1&-1&1&-1\\1&j&-1&-j\end{bmatrix}\begin{bmatrix}1&4&4&1\\2&4&4&2\\2&4&4&2\\1&4&4&1\end{bmatrix}\begin{bmatrix}1&1&1&1\\1&-j&-1&j\\1&-1&1&-1\\1&j&-1&-j\end{bmatrix}\\=\begin{bmatrix}44&-10-10j&0&-10+10j\\-2-2j&-2j&0&-2\\0&0&0&0\\-2+2j&-2&0&2j\end{bmatrix}
    注意这两个权值矩阵对所有4x4的图像都适用,可通过matlab fft2函数检验

    傅里叶反变换的权值矩阵为:
    116[11111j1j11111j1j] \frac{1}{16}*\begin{bmatrix}1&1&1&1\\1&j&-1&-j\\1&-1&1&-1\\1&-j&-1&j\end{bmatrix}

    类似地,构造3x3图像的权值矩阵:
    Ax=Ay=[11111/23/2j1/2+3/2j11/2+3/2j1/23/2j] A_x=A_y=\begin{bmatrix}1&1&1\\1&-1/2-\sqrt{3}/2j&-1/2+\sqrt{3}/2j\\1&-1/2+\sqrt{3}/2j&-1/2-\sqrt{3}/2j\end{bmatrix}

    展开全文
  • 题目:给定一个二维矩阵计算其子矩形范围内元素的总和, 该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 解答思路 : 对于不在边界的任何一点 他 对应 起点 (0,0)的和 始终有一个确定的公式 : f(n,...

    304

    题目:给定一个二维矩阵,计算其子矩形范围内元素的总和,
    该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)
    解答思路 :
    对于不在边界的任何一点 他 对应 起点 (0,0)的和 始终有一个确定的公式 :
    f(n,n) = f(n-1,n)+ f(n,n-1)- f(n-1,n-1);
    这样 ,在一开始的时候,我们就能计算任意一点 到起点的和了。最后要得到 两点的和 也是一样,相减即可

    class NumMatrix {
        int[][] dp ;//记录 当前位置 到 0,0 的和 
        public NumMatrix(int[][] matrix) {
            if(matrix == null)return;
            int row = matrix.length;
            if(row ==0 )return;
            int col = matrix[0].length;
            if(col ==0)return;
            dp = new int[row][col];
            for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                    if(i==0 && j==0) dp[i][j] = matrix[i][j];
                    else if(i==0) dp[i][j] = dp[i][j-1] + matrix[i][j];
                    else if(j==0) dp[i][j] = dp[i-1][j] + matrix[i][j];
                    else {
                        dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + matrix[i][j];
                    }
                }
            } 
        }
    
        public int sumRegion(int row1, int col1, int row2, int col2) {  //任何一点的 和 等于  其左边一点的 和 加上 上边一点的和 减去  左上角的和,加上 自己当前位置的值
            if(row1 > row2) return sumRegion(row2,col1, row1,col2);
            if(col1 > col2) return sumRegion(row1,col2,row2, col1);
    
            return dp[row2][col2] +  (row1 > 0 && col1 >0 ? dp[row1-1][col1-1]:0 ) -   (row1 > 0 ? dp[row1-1][col2]:0) - ( col1 >0 ?dp[row2][col1-1]:0);
        }
    }
    

    53

    题目 :给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

    解题思路 与上一题相仿 ,对于 当前 的 任意一个位置 他的和 始终有一个公式
    sum=max(num[i],num[i]+sum);
    我们只需要将 整个遍历过程中的得到的sum 比较 取得最大的即可

    class  maxlist{
    	public int maxarray(int[] nums) {
    		
    		   int sum =0;
    		   int res=nums[0];		
    		if(nums.length==1) {
    			return  nums[0];
    		}
    		for(int i=0;i<nums.length;i++) {
    			sum=Math.max(nums[i],sum+nums[i]);//  当前的 值  总 会选择  最大的  所以  其和 为要么 为 上一步 的0的和 加上 当前位置的值 要么 只为 当前位置的值  
    			res=Math.max(sum, res);// 挑选出 最大 的和 
    		}
    		
    		
    		return res;
    		
    	}
    	
    }
    
    展开全文
  • 归一化二维互相关矩阵计算

    千次阅读 2017-03-30 10:33:25
    通过讨论归一化二维互相关函数的定义, 将matlab中矩阵的索引和公式中偏移量联系起来.

    一. 定义

    首先看Matlab help 里normxcorr2函数中关于归一化二维互相关矩阵的定义:
    这里写图片描述
    核心就是模板template 二维矩阵使用(u,v)的位移和fixed 矩阵做点乘求和.
    其中template 比 fixed 要小. 假设template矩阵是mn的, fixed矩阵是MN的.

    二. 计算过程

    下面的坐标系都是以matlab的矩阵坐标系来说明的.也就是左上角是坐标原点, 竖直方向往下是x正方向,
    水平方向往右是y的正方向.
    u=0,v=0时, 两矩阵左上角(1,1)位置对齐.
    显然,
    1. 当u>0,v>0时, template 相对于fixed 是往右下角移动了. x轴移动了u单位, y轴移动了v单位.
    2. 当u>0,v<0时, template 相对于fixed 是往左下角移动了. x轴移动了u单位, y轴移动了v单位.
    3. 当u<0,v<0 时, template 相对于fixed 是往左上角移动了. x轴移动了u单位, y轴移动了v单位.
    4. 当u<0,v>0 时, template 相对于fixed 是往右上角移动了. x轴移动了u单位, y轴移动了v单位.
    当然, u,v的取值是有限的, 因为必须要保证template和fixed矩阵是有相交部分的.
    否则相关系数都是0. 没有计算意义.

    所以,
    u的取值是[(m1),M1], 共M+m1点,
    v的取值是[(n1),N1], 共N+n1点.

    所以,
    最后的相关系数矩阵是(M+m1)(N+n1)大小的.

    因为matlab是从(1,1)索引开始存储数据的.
    所以,
    (1,1)索引处, u=(m1)=1m,v=(n1)=1n.

    所以,
    已知相关系数矩阵索引(i, j), 对应公式中:

    u=im,v=jn

    通过这个公式, 就可以把mat索引和相关矩阵的偏移量联系起来了.

    下面是matlab自带的example:
    通过normxcorr2函数求template和fixed的偏移量.
    这种方法在图像模板匹配中是常用的方法.
    注意: imshow输出的figure坐标是图像坐标, 和mat坐标是不同的.

    template = .2*ones(11); % Make light gray plus on dark gray background
    template(6,3:9) = .6;   
    template(3:9,6) = .6;
    BW = template > 0.5;      % Make white plus on black background
    figure, imshow(BW), figure, imshow(template)
    % Make new image that offsets the template
    offsetTemplate = .2*ones(21); 
    offset = [3 5];  % Shift by 3 rows, 5 columns
    offsetTemplate( (1:size(template,1))+offset(1),...
                    (1:size(template,2))+offset(2) ) = template;
    figure, imshow(offsetTemplate)
    % Cross-correlate BW and offsetTemplate to recover offset  
    cc = normxcorr2(BW,offsetTemplate); 
    [max_cc, imax] = max(abs(cc(:)));
    [ypeak, xpeak] = ind2sub(size(cc),imax(1));
    corr_offset = [ (ypeak-size(template,1)) (xpeak-size(template,2)) ];
    isequal(corr_offset,offset) % 1 means offset was recovered
    
    展开全文
  • 二维数组实验题:按如下公式递归计算矩阵行列式的值: 提示信息:“Please enter matrix size n(1<=n<20):” “Please input matrix line by line:\n” “matrix a:\n” **输出格式要求:“Submatrix:\n” ...

    二维数组实验题:按如下公式递归计算矩阵行列式的值:

    提示信息:“Please enter matrix size n(1<=n<20):” “Please input matrix line
    by line:\n” “matrix a:\n”
    **输出格式要求:“Submatrix:\n” “DValue of the Submatrix is %6.1f\n” “%6.1f\t” “result = %f\n”

    程序运行结果如下:

    Please enter matrix size n(1<=n<20):3

    Please input matrix line by line:

    1 2 3

    4 5 7

    8 9 11

    matrix a:

    1.0 2.0 3.0

    4.0 5.0 7.0

    8.0 9.0 11.0

    (注意:此处有一个空行)

    Submatrix:

    5.0 7.0

    9.0 11.0

    DValue of the Submatrix is -8.0

    Submatrix:

    4.0 7.0

    8.0 11.0

    DValue of the Submatrix is -12.0

    Submatrix:

    4.0 5.0

    8.0 9.0

    DValue of the Submatrix is -4.0

    result = 4.000000

    下面是代码:

    #include <math.h>
    #include <stdio.h>
     
    #define  CONST 1e-6
    #define  SIZE 20
     
    void InputMatrix (double a[][SIZE], int n);
    double DeterminantValue(double a[][SIZE], int n);
    void SubMatrix(double a[][SIZE], double b[][SIZE], int n, int row, int col);
    void PrintMatrix(double a[][SIZE], int n);
    int main(void)
    {                        
        double  a[SIZE][SIZE];
        int     n;
        double  result;
        printf("Please enter matrix size n(1<=n<%d):", SIZE);
        scanf("%d", &n);
        printf("Please input matrix line by line:\n");
        InputMatrix(a, n);
        printf("matrix a:\n");
        PrintMatrix(a, n);
        printf("\n");
        result = DeterminantValue(a, n);
        printf("result = %f\n", result);
        return 0;
    }                        
    //  函数功能: 输入一个n×n矩阵的元素
    void InputMatrix (double a[][SIZE], int n)
    {                        
        int i, j;
        for (i = 0; i < n; i++)
        {                        
            for (j = 0; j < n; j++)
            {                        
                scanf("%lf", &a[i][j]);
            }
        }
    }                        
    //  函数功能: 计算n×n矩阵的行列式的值
    double DeterminantValue(double a[][SIZE], int n)
    {                        
        int    i = 0, j = 0;
        double temp, result, b[SIZE][SIZE];
        if (n == 1)
        {                        
            result = a[0][0];
        }
        else if (n == 2)
        {                        
            result = a[0][0] * a[1][1] - a[0][1] * a[1][0];
        }
        else
        {                        
            result = 0.0;
            for (j = 0; j < n; j++)
            {                        
                SubMatrix(a, b, n, i, j);
                printf("Submatrix:\n");
                PrintMatrix(b, n - 1);
                temp = DeterminantValue(b, n - 1);
                result += pow(-1, i + j) * a[0][j] * temp;
                printf("DValue of the Submatrix is %6.1f\n", temp);
            }
        }
        return result;
    }                        
    //  函数功能: 计算n×n矩阵a中第row行col列元素的(n-1)×(n-1)子矩阵b
    void SubMatrix(double a[][SIZE], double b[][SIZE], int n, int row,
                   int col)
    {                        
        int i, j, ii = 0, jj = 0;
        for (i = 0; i < n; i++)
        {                        
            jj = 0;
            for (j = 0; j < n; j++)
            {                        
                if (i != row && j != col)
                {                        
                    b[ii][jj] = a[i][j];
                    jj++;
                }
            }
            if (i != row && j != col)
            {                        
                ii++;
            }
        }
    }                        
    //  函数功能: 输出一个n×n矩阵的元素
    void PrintMatrix(double a[][SIZE], int n)
    {                        
        int i, j;
        for (i = 0; i < n; i++)
        {                        
            for (j = 0; j < n; j++)
            {                        
                printf("%6.1f\t", a[i][j]);
            }
            printf("\n");
        }
    }                       
    

    展开全文
  • 一,n数组地址计算公式 ji表示n数组中该元素在第i中的坐标 ai表示n数组中第i的起始坐标 bi表示第i维度的长度 L表示一个元素所占的字节数 LOC(…)表示该坐标对应的存储中的地址(一坐标) PS.对与简单...
  • 1. 同线性代数中矩阵乘法的定义: np.dot()np.dot(A, B):对于二维矩阵计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码:import numpy as np# 2-D array:...
  • 题主说的是二维图片之间的单应变换吧。咱一步一步来: 一、单应和齐次坐标 一个单应矩阵是大小为3*3的矩阵,满足给定一个点,把点变成一个新的点。注意由于它们都是齐次坐标,对应的图像上的两个点分别是和。 ...
  • 二维卷积/矩阵卷积

    万次阅读 2017-07-22 05:09:02
    二维卷积/矩阵卷积的计算方程设有矩阵A和矩阵B,它们的卷积结果矩阵的元素可由下列公式计算得来: C(j,k)=∑p∑qA(p,q)B(j−p+1,k−q+1)C(j,k)=\sum_p \sum_q A(p,q) B(j-p+1,k-q+1) 其中的index只要在A,B中valid...
  • 1. 同线性代数中矩阵乘法的定义: np.dot()np.dot(A, B):对于二维矩阵计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码: import numpy as np# 2-D array...
  • 矩阵表示和齐次坐标本节矩阵变换公式较多,为方便,设置为图片格式,但实例代码可复制,这样不影响学习,如果需要word版,请私聊。为方便阅读,图片水印加到了最右下角,但是个人劳动成果,未经过同意,请勿转载...
  • 预处理一个二维前缀数组,这个前缀数组的计算利用容斥原理。 在O(1)时间求区域和的时候利用公式: class NumMatrix { public: vector<vector<int>> preSum; NumMatrix(vector<vector<int>...
  • 图形学作业四矩阵变换二维坐标推导,文档中公式均为mathtype类型。推导详细,步骤清晰。主要写了证明两个连续的旋转变换的矩阵运算具有互换性、已知三角形ABC各顶点的坐标A(1, 1) B(4, 1) C(3, 4),相对直线y=x+2做...
  • 1. 同线性代数中矩阵乘法的定义: np.dot()np.dot(A, B):对于二维矩阵计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码:import numpy as np# 2-D array:...
  • np.dot(A, B):对于二维矩阵计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码: import numpy as np # 2-D array: 2 x 3 two_dim_matrix_one = np.array...
  • 数学符号 sigma:累加计算 PI:累乘计算 矩阵(Matrix)下标为m行n列 意为矩阵 为 行 列的矩阵 矩阵元素 ,其下标为 第 行, 第 列1.累加计算 总计符号sigma意为i初始值为1,i累加至n,对i进行求和 function sigma(n){ let...
  • 4.1 数组运算和矩阵运算 从外观形状和数据结构来看 ,二维数组和数学中的矩阵没有区别 .但是 ,矩阵作为一种变换或 映射算符的体现 ,矩阵运算有着明确而严格的数学规则 .而数组运算是 MATLAB 软件所定义 的规则 ,其...
  • 按照二维傅里叶变换的公式计算的话不是其他地方也应该有值吗? 另外,图像中灰度值只有在水平方向有变化,若将u理解为水平方向的频率分量,那么空域中图像灰度在水平方向有变化,不应该就有u分量的值不为0吗?有点...
  • WebGl 球面计算公式

    千次阅读 2017-06-13 11:45:56
    WebGl 的球体模型构建WebGl 场景交互时视角变换的方法WebGl 中 3D 空间的点在二维平面上的投影360 度播放器的视频流的处理 以上是全景播放器以及 Slam 场景所涉及的主要内容,其中 WebGl 球体模型的构建是两个项目...
  • 之前搞特征分析时,对一个样本矩阵 求协方差矩阵,在 中行表示样本数,...定义关于参数 的似然函数为: 为了方便计算,我们对公式(2)两边取自然对数,得到: 将公式(1)代入公式(3),并利用对数的性质,将乘法...
  • 二维卷积

    千次阅读 2013-10-30 17:12:02
    二维卷积 ... 前两天参加笔试时候有个题考的是二维卷积,发现不会做了,这里做一下...二维卷积公式: 离散二维卷积公式: 在网上找到一种比较好理解的多项式乘法方法计算矩阵卷积方法(来源:http://bbs.scie
  • 向量可以用一维度数组表示,矩阵可以用二维数组表示 PageRank算法 PageRank算法的公式为: 其中pi为第i张网页,Mi为第i张网页入链的集合,Pj为Mi中的第i张网页,L(pj) 为Pj出链的数量,α为不随机冲浪的概率,1...
  • 2.7.1 getCompleteHessianDerivs() 这个函数也位于 Creating-2D-laser-... * 使用当前pose投影dataPoints到地图,计算出 H 矩阵 b列向量, 理论部分详见Hector论文: 《A Flexible and Scalable SLAM System with Full
  • 给出一个二维数据: 通过计算各点到轴的平均长度,定位原点,下图中,蓝色的X既是后面要用到的原点。 第二步,寻找拟合线 在原点处随意绘制一条直线,然后计算各点投影到该线上的距离的平方和,然后不断旋转该线,...
  • 矩阵()

    2020-05-30 09:23:52
    在计算机几何图形中,矩阵的作用可以定义旋转,平移,缩放,投影,镜像等等,在三设计软件中,对于物体的操作尤其重要。本篇需要用到向量的点乘和叉乘相关知识点和矩阵的基本概念,如果对向量和矩阵不太熟悉,可以...
  • 二维坐标变换

    2019-10-01 16:48:12
    直接用公式计算,不但复杂,而且效率低下。这时可以借助变换矩阵矩阵乘法,将多个变换合成一个。最后只要用一个矩阵对每个点做一次处理就可以得到想要的结果。 另外,矩阵乘法一般有硬件支持,比如3D图形加速卡,...
  • 在深入分析二维高斯分布公式的基础上,通过将光斑中心整像素坐标和亚像素坐标进行分离,推导出一种无需求解广义逆矩阵的高斯曲面解析算法,该方法综合利用窗口内的所有像素灰度信息,通过解析表达式直接计算高斯分布...
  • 将无网格方法(PIM、RPIM及EFGM)用于重力异常场二维正演计算:首先从重力异常二维变分问题出发,利用Galerkin法结合高斯积分公式推导了对应的无网格离散系统矩阵表达式;其次通过数值试验得出了RPIM-MQ、RPIM-exp及EFGM-...
  • 二维坐标转换

    2020-12-18 15:11:31
    上图是一个简单的实例,正方形ABCD经过缩放、旋转、迁移之后形成了A’B’C’D’,在高数里面,很容易根据相关公式求出一个矩阵,算出A’B’C’D’的坐标,这里并不科普矩阵计算方式; 实际场景 现实生活中,存在...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 250
精华内容 100
热门标签
关键字:

二维矩阵计算公式