精华内容
下载资源
问答
  • 复数矩阵相乘的扩展矩阵计算方法

    千次阅读 2018-07-04 21:44:18
    假设矩阵AA\boldsymbol{A}和BB\boldsymbol{B}为复数矩阵,当我们运用matlab计算两个矩阵的乘积时(矩阵AA\boldsymbol{A}和BB\boldsymbol{B}满足矩阵相乘的维度条件),我们可以直接在命令窗口输入A...

    Matlab是矩阵计算语言,其最基本的存储单位就是矩阵。在诸多信号处理领域,我们所涉及到的信号都是复数信号,那么matlab如何处理复数矩阵呢? 假设矩阵AB为复数矩阵,当我们运用matlab计算两个矩阵的乘积时(矩阵AB满足矩阵相乘的维度条件),我们可以直接在命令窗口输入AB

    当然,我们也可以采用扩展矩阵的做法来计算复数矩阵的计算。首先是对矩阵进行拆分B=BR+jBM,我们用实数矩阵表示B,如

    (393)B=(BRBM)

    另外
    (394)A=(ARAMAMAR)

    则有
    (395)AB=(ARAMAMAR)(BRBM)=(ARBRAMBMAMBR+ARBM)

    最后,我们用AB的计算结果来表示C,即C=ARBRAMBM+j(AMBR+ARBM)

    展开全文
  • I've been trying to figure out the algorithm behind NumPy's matrix multiplication for complex numbers:import numpy as npA = np.array([[17.+0.j, -3.+0.j],[-7.+0.j, 1.+0.j]])B = np.array([[ 60.+0.j, -.....

    I've been trying to figure out the algorithm behind NumPy's matrix multiplication for complex numbers:

    import numpy as np

    A = np.array([[17.+0.j, -3.+0.j],

    [-7.+0.j, 1.+0.j]])

    B = np.array([[ 60.+0.j, -4.+0.j],

    [-12.+0.j, 0.+0.j]])

    print(A * B)

    It outputs:

    [[1020.+0.j 12.-0.j]

    [ 84.-0.j 0.+0.j]]

    The result from a standard matrix multiplication is very different, as you can see by the numbers below, so I'm left wondering what it is exactly that NumPy does:

    [[1056.+0.j -68.+0.j]

    [-432.+0.j 28.+0.j]]

    I've been trying to reproduce their multiplication algorithm using just for loops but I still haven't found the answer. Any tips?

    解决方案

    When you compute A*B it's actually multiplying the matrices elementwise, giving you what is called the hadamard product. It isn't matmul. For example (17.+0.j) * (60.+0.j) = 1020.+0.j, which is the first element in the output. For matrix multiplication use np.dot or simply the @ operator, ie, A@B.

    展开全文
  • 这里借鉴了TI官方的dsp函数库中的矩阵处理函数 void mat_mul_cplx(const float *x1, int r1, int c1, const float *x2, int c2, float *y) { float real, imag; int i, j, k; for (i = 0; i < r1; i++) ...

    这里借鉴了TI官方的dsp函数库中的矩阵处理函数

    void mat_mul_cplx(const float *x1, int r1, int c1, const float *x2,
    	int c2, float *y)
    {
    	float real, imag;
    	int i, j, k;
    
    	for (i = 0; i < r1; i++)
    	for (j = 0; j < c2; j++)
    	{
    		real = 0;
    		imag = 0;
    
    		for (k = 0; k < c1; k++)
    		{
    			real += (x1[i * 2 * c1 + 2 * k] * x2[k * 2 * c2 + 2 * j]
    				- x1[i * 2 * c1 + 2 * k + 1] * x2[k * 2 * c2 + 2 * j + 1]);
    			imag += (x1[i * 2 * c1 + 2 * k] * x2[k * 2 * c2 + 2 * j + 1]
    				+ x1[i * 2 * c1 + 2 * k + 1] * x2[k * 2 * c2 + 2 * j]);
    		}
    
    		y[i * 2 * c2 + 2 * j] = real;
    		y[i * 2 * c2 + 2 * j + 1] = imag;
    	}
    }
    

    测试程序如下(矩阵A为3*1阶 矩阵B为1*3阶):

    int main()
    {
    	int i;
    	float A[6] = {1.2,2.1,3.0,4.2,5.0,6.0};
    	float B[6] = {1.2,2.1, 3.0,4.2,5.0,6.0 };
    	float C[18];
    	mat_mul_cplx(A, 3, 1, B, 3, C);
    	for (i = 0; i < 18; i++)
    	{
    		cout << C[i]<<endl;
    	}
    }

    结果如下:

    matlab计算结果如下:

    两者结果一致。 

     

    展开全文
  • 即使矩阵是实的,特征值和特征向量也经常会是复数。1. 虚数回顾虚数由实部和虚部组成,虚数相加时实部和实部相加,虚部和虚部相加,虚数相乘时则利用 。在虚平面,虚数 是位于坐标 的一个点。复数 的共轭为 。在极...

    为了完整地展示线性代数,我们必须包含复数。即使矩阵是实的,特征值和特征向量也经常会是复数。

    1. 虚数回顾

    虚数由实部和虚部组成,虚数相加时实部和实部相加,虚部和虚部相加,虚数相乘时则利用

    7f4133ed3c8948e20bcd6c3856e99528.png

    在虚平面,虚数 是位于坐标 的一个点。复数 的共轭为

    9700c49f8558c4bd244e5373a3c2910e.png

    在极坐标下,复数则可以写作模长和极角的形式。

    491d23233e5302fa5a241a49dbef4ed2.png

    两个复数相乘是模长相乘,极角相加。

    38dd4840b9e718ae99167580889e15c9.png
    079e2bfc7e0dcc0fa73d3f747cf2c306.png
    8d5f4983b206817e1ef13306f95594af.png
    cf210057909f099adf93e057922e6c66.png

    2. 厄米特(Hermitian)矩阵和酉(Unitary)矩阵

    这部分的重点可以用一句话来介绍:当你对一个复数向量或者矩阵进行转置时,同时对它们取共轭。

    48401996965b0342f75ca2f18a33675b.png

    为什么要这样做呢?一个理由是复数向量长度的特殊性。针对实向量,其长度的平方为 ,但复数向量长度的平方并不是 。比如 长度的平方并不是 ,而应该是

    c6dbf9a8868f20021c71a7edf64d102e.png

    我们定义一个新符号,,来表示向量的共轭转置,这个符号也可以应用到矩阵中去。

    25319592716ac43cac1b1d872f9674dc.png

    同时,我们也要对向量的内积定义进行一下扩展,但内积为零仍然表明正交。

    4d177e60b5db9b23f36f7c1f5514c3d5.png

    这时候,向量的顺序就变得重要了。

    12df12d5f8fd836fe058fb614eb3d20e.png

    一个厄米特矩阵满足 ,每一个实对称矩阵都是厄米特的,因为实数的共轭还是它本身。

    efa32deb0a2084a4292005440ee6842e.png

    如果 是任意向量,那么 是实数。

    4e1421d2c7ad6a245b253c88b772fd27.png

    来自对角线上的两项都是实数,而来自非对角线上的两项互为共轭,相加之后也为实数。

    厄米特矩阵的每个特征值都是实数。

    上式左边为实数, 是长度的平方,是正实数,所以特征值也必须为实数。

    67b0f2a1d59edb1ab75f9d8ab7794a8b.png

    厄米特矩阵对应于不同特征值的特征向量是正交的。

    比较 (1) 式和 (2) 式可得,两式左边相等,所以右边应该也相等。又由于两个特征值不一样,所以有 ,两个特征向量正交。

    35aa15fe238a39000a679a2ec99f79be.png

    酉矩阵是一个有着标准正交列的方阵。

    28cfd16bc1b2a17fe1932a226b1842e9.png

    任意有着标准正交列的矩阵满足 ,如果它还是一个方阵,那么有

    一个酉矩阵乘以任意向量,向量的长度保持不变。

    而且,酉矩阵的所有特征值的绝对值都为 1。

    6841600e6afb49a2f256c633148334bd.png

    最后,我们来总结一下实数和虚数向量以及矩阵之间的一些概念迁移。

    8aaa85f29722ba2b5d79fbed4b98cfae.png

    推荐阅读:

    RAM: Residual Attention Module for Single Image Super-Resolution

    线性代数之——傅里叶级数

    展开全文
  • 复数类型矩阵相乘GPU加速--pycuda

    千次阅读 2017-09-10 19:50:46
    开发环境Ubuntu16.04 ,python3 ...复数类型矩阵相乘GPU加速–pycuda我在用卷积定理做卷积时遇到的一个问题就两矩阵做完FFT之后都是为复数怎么用pycuda做矩阵相乘,在给GPU传递参数的时候总是有问题。
  • R中矩阵相乘错误于A %*% B: 需要数值/复数矩阵/矢量参数 看到网上别人的做法,发现了用class(A)和class(B)之后才发现,是因为读入的时候数据的类型不对,A、B的类型并不是matrix,才导致了这个问题。 用as....
  • 学计算功能Abs(x)实数的绝对值或复数的幅值floor(x)对x朝-∞方向取整Acos(x)反余弦arcsinxgcd(m,n)求正整数m和n的最大公约数acosh(x)反双曲余弦arccoshximag(x)求复数x的虚部angle(x)在四象限内求复数x的相角lcm(m...
  • 即使矩阵是实的,特征值和特征向量也经常会是复数。1. 虚数回顾虚数由实部和虚部组成,虚数相加时实部和实部相加,虚部和虚部相加,虚数相乘时则利用 。在虚平面,虚数 是位于坐标 的一个点。复数 的共轭为 。在极...
  • 即使矩阵是实的,特征值和特征向量也经常会是复数。 1. 虚数回顾 虚数由实部和虚部组成,虚数相加时实部和实部相加,虚部和虚部相加,虚数相乘时则利用 i2=−1i^2=-1i2=−1。 在虚平面,虚数 3+2i3+2i3+2i 是位于...
  • 常用的矩阵运算,复数矩阵的乘法、相加、共轭等,去掉复数的修饰‘’_Complex‘’,即为实数的相关运算
  • 当然也就可以用复平面上的点来表示复数:乘法复数的乘法: 可以把它看做一个矩阵和一个向量相乘: 所以复数也可以看成矩阵: , 把 也换成对应的矩阵: : 这也足以证明复数看成矩阵是正确的,所以复数相乘这个运算,...
  • # 什么是矩阵 在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。 这一概念由19世纪英国数学家凯利首先提出。矩阵是高等代数学中的常见工具,也常见于...
  • 建立一套新颖的光学负二...利用两层阵列可实现高精度的复数运算,三层阵列可实现复数矩阵-矢量运算。该算法体系非常适合于光学执行。相应地,文中给出了两层列阵复数相乘光学系统及实验结果。原理上,该算法是可级联的。
  • 酉空间: 在复数域的线性空间基础上,有了内积的定义(两个空间元素相乘等于一个复数) 注意复习酉空间的性质 度量矩阵:在一个酉空间内,它有一组基;如果描述这个空间内任意两个向量的内积的时候,就可以用度量...
  • 关于旋转矩阵的理解

    2020-05-29 09:33:36
    https://krasjet.github.io/quaternion/quaternion.pdf 在最开始的一部分。 这里面从复数相乘的角度来解释旋转矩阵我感觉非常棒。
  • 常用矩阵运算

    2017-09-09 14:32:00
    作者:桂。 ...一、复数相乘 可以表示为分块的形式: 二、范数  A-范数基本定义 p = 0,0范数,对应非零元素个数; p = 1,1范数,也成和范数; p = 2,常称为Euclidean范数,也成...
  • C++实现矩阵类和向量类

    千次阅读 2019-05-28 12:37:45
    【问题描述】请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员函数,读入一个矩阵,输出一个矩阵 3.编写成员函数,计算两个矩阵相加、相减、点乘 4.编写成员函数,利用...
  • 利用C++调用Eigen库实现矩阵的基础运算,包括矩阵的相加,相乘,转置,求逆,伴随矩阵,特征值。 Eigen是C++中可以用来调用并进行矩阵计算的一个库,里面封装了一些类,需要的头文件和功能如下: Eigen基础语法说明...
  • 公式描述给定一个阶的矩阵的SVD分解,如果截取其前阶作为原先矩阵的SVD分解的近似,那么截断误差可以用矩阵范数(F范数)计算,为:其中等价与第到第个奇异值构成的...(在这里,如果是涉及到复数就需要换成共轭转...
  • 矩阵分析及其在线性代数中的应用(3-4) ...标量乘法:逐元素相乘(关于标量和矩阵均满足分配律) 原矩阵\(A\),共轭矩阵\(\mathop{A}\limits^{-}\),矩阵的转置\(A^{T}\),共轭转置(伴随矩阵(\(A^{\*}=...
  • 文章目录矩阵(二维数组)向量(只有一列的矩阵)矩阵简单运算矩阵加(减)法矩阵乘(除)标量矩阵乘法特例:矩阵与向量相乘矩阵与矩阵相乘矩阵乘法的性质单位矩阵矩阵的逆矩阵转置 矩阵(二维数组) 矩阵:长方阵列排列...
  • 原创博客,转载请注明出处! 第三章主要讲的是矩阵,故对于线性代数很熟悉的同学可以跳过这章 矩阵就是用中括号括起来的若干行若干列的数聚在一起 专业定义是:矩阵(Matrix)是一个...无论矩阵跟矩阵相乘还是矩...
  • (1.c) 用一个实矩阵乘以一个复数矩阵,即用实矩阵中的元素同时乘以复数矩阵对应位置上的复数的实部与虚部。 可以通过调用两个图像的乘法程序来实现对应元素的相乘; (1.d) 计算反付立叶变换; (1.e)...
  • 实验要求 ...  (1.c) 用一个实矩阵乘以一个复数矩阵,即用实矩阵中的元素同时乘以复数矩阵对应位置上的复数的实部与虚部。可以通过调用两个图像的乘法程序来实现对应元素的相乘;   (1.d) 计算反付
  • Numpy

    2019-09-17 13:25:45
    Numpy 进行矩阵运算 用c语言编写,擅长数组复杂运算 最基本数据类型: ndarray(整数、浮点数、复数) Np.array(列表):把列表变成ndarray...在numpy里,矩阵相乘是按位置乘,若是其中某一矩阵没达到相乘条件(行数或者...
  • 4.1 实矩阵相乘 4.2 复矩阵相乘 4.3 一般实矩阵求逆 4.4 一般复矩阵求逆 4.5 对称正定矩阵的求逆 4.6 托伯利兹矩阵求逆的特兰持方法 4.7 求一般行列式的值 4.8 求矩阵的秩 4.9 对称正定矩阵的乔里斯基分解与行列式求...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

复数矩阵相乘