精华内容
下载资源
问答
  • 今天遇到一个问题,有一个4333*1的**complex double 矩阵**,进行相关运算时候,发现matlab运行出不来结果,于是就开始着手解决这个问题,后来参考很多资料,总结了两种方案,比较得出第二种方案更佳:首先思路都是...

    今天遇到一个问题,有一个4333*1的**complex double 矩阵**,进行相关运算时候,发现matlab运行出不来结果,于是就开始着手解决这个问题,后来参考很多资料,总结了两种方案,比较得出第二种方案更佳:

    首先思路都是先将这个变量矩阵保存为.dat的文件,然后下次用到时候再引用出来。用到语句是:

    fid_r=fopen('test_111.dat','w'); %创建文件test_111.dat

    fwrite(fid_r,rc_e,precision); %将rc_e变量写入fid_r,即存入变量test_111.dat中

    fid_r=fopen('test_111.dat','r');%读数据文件

    data_real = fread(fid_r,Nr,precision);%将数据文件test_111.dat写入data_real

    1.一开始为了图省事,我把这个complex矩阵存到一个dat文件中,但是后面在for循环中调用时候,又会运行很慢! 这里面在存储dat文件时候,需要调用一个Des_conv函数,下面会说到。

    2.另一种思路,把complex数据分成实部,虚部存到两个dat文件中,后面for循环用到时候也是先分别调用出来,再用y=data1+j*data2的形式构建原来complex数据。这样效率大大提高了! 当然在存储时候,也用到了Des_conv函数。

    【Des_conv函数】:在size比较大的复数矩阵存储时候,如果直接存储会偶尔出错,并且每运行一次就有一次新结果。将文件A中的矩阵分成4块来转置存储到B中,实现了矩阵的快速存储。附上函数代码:

    function RDS_conv(src,dst,row,column)

    % 实现将文件src中的矩阵分成4块来转置存储到dst中,不必考虑M是否为4的整数倍。

    BYTE = 4;

    precision = 'float32';

    SUB_NUM = 4; % 将矩阵分成4块来处理

    block = fix(column/SUB_NUM); % 向零取整

    reml = rem(column,SUB_NUM); % column/CON_LINE取余

    fs = fopen(src,'r');

    fd = fopen(dst,'w');

    fseek(fs,0,-1);

    fseek(fd,0,-1);

    temp = zeros(row,block);

    for jj = 1 : SUB_NUM

    fseek(fs,0,-1);

    beginN = (jj - 1)*block*BYTE;

    endN = (SUB_NUM - jj)*block*BYTE + reml*BYTE;

    for ii = 1 : row

    fseek(fs,beginN,0);

    kkk = fread(fs,block,precision);

    temp(ii,:) = kkk.';

    fseek(fs,endN,0);

    end

    fwrite(fd,temp,precision);

    end

    if (reml>0)

    temp_rem = zeros(row,reml);

    fseek(fs,0,-1);

    for ii = 1 : row

    fseek(fs,SUB_NUM*block*BYTE,0);

    ggg = fread(fs,reml,precision);

    temp_rem(ii,:) = ggg.';

    end

    fwrite(fd,temp_rem,precision);

    end

    fclose('all');

    disp('end of matrix_rotate')

    最后把整个处理的大致代码附上:

    fid_r=fopen('data_real.dat','r');

    fid_i=fopen('data_image.dat','r');

    /* 中间复数变量RC的计算过程 */

    fwrite(fid_r,real(RC),precision);

    fwrite(fid_i,imag(RC),precision);

    RDS_conv('data_real.dat','data_real_ro.dat',Na,Nr_effect); %分块存储实部

    RDS_conv('data_image.dat','data_image_ro.dat',Na,Nr_effect);%分块存储虚部

    fid_r=fopen('data_real.dat','r');

    fid_i=fopen('data_image.dat','r');

    data_real_range= fread(fid_r,Nr,precision);

    data_image_range = fread(fid_i,Nr,precision);

    data_last=(data_real_range+1i*data_image_range).';

    /* 后面计算过程 */

    当然,这只是我遇到的matlab运行结果慢时候的一种情形解决方案,有其他问题导致运行效率低的同学,也可以参考这篇博文:提高matlab运行效率:https://blog..net/pursh0000/article/details/51314209

    展开全文
  • matlab基本命令 复数 a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 theta=angle(z) %计算相角 angle(a)*180/pi %以角度为单位计算相角 数值矩阵 #生成 from:to %默认step=1 from:step:to linspace...

    环境功能

    M文件即脚本、多行命令
    MAT文件即数据文件,用于储存变量
    上下键于命令窗口为复现上下行

    matlab基本命令

    复数

    a=real(z) %计算实部
    b=imag(z) %计算虚部
    r=abs(z) %计算幅值
    theta=angle(z) %计算相角
    angle(a)*180/pi %以角度为单位计算相角
    

    数值矩阵

    #生成
    from:to %默认step=1
    from:step:to
    linspace(a,b,n) %a到b线性分布n个元素组成向量
    
    #特殊
    zeros(m,n)
    ones(m,n)
    rand(m,n)  %均匀分布随机
    randn(m,n) %正态分布随机
    eye(m,n)   %单位矩阵
    
    #提取与赋值(超出则填0)
    a(i,j) %全下标
    a(i)   %长列单下标
    
    # 子矩阵产生与赋值
    a([1 3],[2 3])%取行数为 1、3,列数为 2、3 的元素构成子矩阵
    a(1:3,2:3)    %1~3,2~3
    a(:,3)        %取第三列
    a(1:3,end)    %end表最大值
    a([1 3;2 6])  %单下标生成
    #逻辑矩阵提取例
    b=a>1 %得出逻辑向量 b
    b =
     0 1 0
     1 1 0
     1 1 1 
    a(b) %按单下标顺序排成长列
    ans =
     3
     5
     2
     4
     6
     9
     #删除直接赋值[]
     #可利用[]直接连接矩阵
    
    

    字符串

    str1='Hello'           %单引号表示
    str4=[str1,'! ',str2]  %连接字符串,按照列连接必须大小相同
    str8=strvcat(str1,str2)%以列相接
    eval(str9)             %执行
    

    矩阵运算

    det(X)        %计算方阵行列式
    rank(X)       %求矩阵的秩
    inv(X)        %求矩阵的逆阵
    [v,d]=eig(X)  %计算矩阵特征值和特征向量
    diag(X)       %产生X矩阵的对角阵
    [l,u]=lu(X)   %方阵分解为一个准下三角方阵和一个上三角方阵的乘积
    [q,r]=qr(X)   %矩阵分解为一个正交方阵 q 和一个与X同阶的上三角矩阵 r 的乘积
    [u,s,v]=svd(X)%分解为三个矩阵的乘积,其中 u,v 为正交方阵,s 为对角阵(奇异值)
    
    

    矩阵数组算数运算

    ± 若为标量则表示分别
    *、.*点乘为对应相乘/\,/.\同样
    解线性方程显示特解或最小二乘解
    矩阵乘方的运算表达式为“A^B”,其中 A 可以是矩阵或标量。搜索关键词看情况
    A’表转置,负数矩阵为共轭转置,A.'表示数组 A 的转置,如果数组 A 为复数数组,则不是共轭转置
    ceil为+
    ceil为+
    在这里插入图片描述

    =

    展开全文
  • matlab中两个复数矩阵相乘代码MathY 1.0.0 欢迎来到MathY! MathY是仅用于教育或娱乐目的的简单数学工具箱。 它由在数学和编程领域具有广泛而狂野兴趣的当前ME初中生制成。 从一开始,MathY就不需要其他第三方库即可...
  • matlab中两个复数矩阵相乘代码comphomalg:计算同源代数库 版权所有(c)2019,Michael Robinson 概要 该库包含用于处理线性图的序列以及这些序列之间的图的函数,即“同源代数工具”。 该库是为与GNU Octave一起...
  • matlab复数取模运算

    千次阅读 2021-04-18 04:18:37
    IFFT, 打乱相位可以采用函数F=F(randperm(numel(F))), 在打乱相位后进行反傅里叶变换时,新产生的... 学会用 MATLAB 进行信号基本运算的方法; 二、实验原理 1. 连续信号的 MATLAB 表示 MATLAB 提供了大量......[3.1...

    IFFT, 打乱相位可以采用函数F=F(randperm(numel(F))), 在打乱相位后进行反傅里叶变换时,新产生的序列会有虚数存在,这 里采取了取模值的方法进行下一步运算。...

    实验目的 1. 学会用 MATLAB 表示常用连续信号的方法; 2. 学会用 MATLAB 进行信号基本运算的方法; 二、实验原理 1. 连续信号的 MATLAB 表示 MATLAB 提供了大量......

    [3.12 -3.12]) ans = 3 -3 取模(mod)与取余(rem)的不同: 通常取模运算也叫取余运算,它们返回结果都是余数.rem 和 mod 唯一的区别在于: 当 x 和......

    对应的 matlab 程序如下: T8 =mod((T^8),2); %计算结果对 2 取模, 是因为我们执行的是二进制 %加减运算 T7 =mod((T^7),2); T6 =mod((T^6)......

    今后在遇到相量的题时不用再担心计算问题,把交流看成直流来列方程,里 面含有的复数运算直接交予 matlab 来解决,学会的语句有取模 abs 语句和取角度 angle 语句......

    MATLAB在信号与系统课程中的应用 EE of BUPT 复数的表示 ? ? ? ? z1=8+10i; %直接按直角坐标的方式输入 z2=8+10*i; %运算符构成的直角坐标的方式输入......

    频谱矩阵进行一些必要的处理 , 以得到不同的处理 目的 ,包括 : ( 1) 取模函数 abs ( ) 对该复数矩阵取模 , 得到振 幅谱矩阵 ,因为光学图像处理的频谱图......

    *k)/N;%由Y(k)的IDFT 求 y(n) yn=abs(yn) %取模值,消除DFT带来的微小复数影响 得到: yn= 0.0000 1.0000 3.0000 6.0000 5.0000 3.0000 运行结果......

    频谱矩阵进行一些必要的处理 , 以得到不同的处理 目的 ,包括 : ( 1) 取模函数 abs ( ) 对该复数矩阵取模 , 得到振 幅谱矩阵 ,因为光学图像处理的频谱图......

    该频谱是一个复数矩阵,然后用取模函数 abs()对该 复数矩阵取模,得到振幅谱矩阵,利用函数 fftshift( 5 )对取模后的矩阵进行频谱位移,这是因为变换后的二 维......

    该频谱是一个复数矩阵,然后用取模函数 abs()对该 复数矩阵取模,得到振幅谱矩阵,利用函数 fftshift()对取模后的矩阵进行频谱位移,这是因为变换后的二维矩 阵的......

    利用 MATLAB 函数库中的 fft2()命令对该矩阵进行二位离散傅立叶变换,得到图像的 频谱,该频谱是一个复数矩阵,然后用取模函数 abs()对该复数矩阵取模,得到振幅谱......

    比如:百分号% 在 c 语言中的意义为: 、取模运算符; 、转义符。但在 matlab (1) (2) 语言中则是注释说明的符号。而在 c 语言中,注释说明所用符号为/* ......

    表2-1 常用复数数组运算函数 函数名 功能 real() 复数的实部 imag() 复数的虚部 abs() 实数取绝对值或复数取模 angle() 复数的幅角 conj() 复数的共轭 ......

    五、matlab 中常见的运算函数 三角、反三角函数,指数、对数函数,圆整函数、绝对值,sum, prod, max, min 复数取实部、虚部、取模 Cross, dot, compan, inv,......

    取模函数 rem 除取余 mod 除取整 mean 按列求平均值 Matlab 语言基础 prob 接地 Sum(x,dim)dim=1 按列 2 按行求与 conv 可以做多项式乘法 比如,(X^6+......

    (逆)条件数 计算特征值、特征向量同时给出条件数 范–1 条件数估计 复数共轭 ...

    图 3-9 中的 4 个曲线从上到下分别对应着图像 0.bmp、00.bmp、1.bmp、11.bmp,是把这4个图像的特征值求 出,然后取绝对值(复数取模),最后把绝对值绘制......

    对采样 后的数据进行 FFT 变换,变换至频域后,与其匹配滤波器频谱数据进行复数相乘, 最后将结果做 IFFT,重新变换回时域。以下 MATLAB 代码仿真了上述过程,并将 ......

    假设 FFT 之后某点 n 用复数 a+bi 表示,那么这个复数的模就是 An=根号 a*a+b*b,相位就是 Pn=atan2(b,a)。根据以上的结果, 就可以计算出 n 点(n≠......

    展开全文
  • 3.0000i 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i C返回中testTest * testTest’的乘法返回带有实部0和成像部分28的复数.Matlab只返回值为28的...

    有人可以向我解释为什么结果会有所不同.

    C中的代码:

    MatrixXcd testTest;

    testTest.resize(3,3);

    testTest.real()(0,0) = 1;

    testTest.real()(0,1) = 2;

    testTest.real()(0,2) = 3;

    testTest.real()(1,0) = 1;

    testTest.real()(1,1) = 2;

    testTest.real()(1,2) = 3;

    testTest.real()(2,0) = 1;

    testTest.real()(2,1) = 2;

    testTest.real()(2,2) = 3;

    testTest.imag()(0,0) = 1;

    testTest.imag()(0,1) = 2;

    testTest.imag()(0,2) = 3;

    testTest.imag()(1,0) = 1;

    testTest.imag()(1,1) = 2;

    testTest.imag()(1,2) = 3;

    testTest.imag()(2,0) = 1;

    testTest.imag()(2,1) = 2;

    testTest.imag()(2,2) = 3;

    cout<< endl << testTest << endl;

    cout<< endl << testTest.transpose() << endl;

    cout<< endl << testTest*testTest.transpose() << endl;

    cout<< endl << testTest << endl;

    C的结果:

    (1,1) (2,2) (3,3)

    (1,1) (2,2) (3,3)

    (1,1) (2,2) (3,3)

    (1,1) (1,1) (1,1)

    (2,2) (2,2) (2,2)

    (3,3) (3,3) (3,3)

    (0,28) (0,28) (0,28)

    (0,28) (0,28) (0,28)

    (0,28) (0,28) (0,28)

    (1,1) (2,2) (3,3)

    (1,1) (2,2) (3,3)

    (1,1) (2,2) (3,3)

    和Matlab写的一样:

    testTest = [ complex(1,1) complex(2,2) complex(3,3);

    complex(1,1) complex(2,2) complex(3,3);

    complex(1,1) complex(2,2) complex(3,3)];

    testTest

    testTest'

    testTest*testTest'

    testTest

    Matlab结果:

    testTest =

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    ans =

    1.0000 - 1.0000i 1.0000 - 1.0000i 1.0000 - 1.0000i

    2.0000 - 2.0000i 2.0000 - 2.0000i 2.0000 - 2.0000i

    3.0000 - 3.0000i 3.0000 - 3.0000i 3.0000 - 3.0000i

    ans =

    28 28 28

    28 28 28

    28 28 28

    testTest =

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    C返回中testTest * testTest’的乘法返回带有实部0和成像部分28的复数.Matlab只返回值为28的dobule.

    解决方法:

    因此,如果您将MATLAB测试更改为

    testTest*testTest.'

    结果应该是一样的.

    如果你想在eigen中进行复数转置,那么你可以去matrix.adjoint()(或matrix.conjugate().transpose())

    标签:c,matlab,eigen

    来源: https://codeday.me/bug/20190824/1710057.html

    展开全文
  • matlab 复数矩阵的 .' 与 '

    千次阅读 2019-08-04 22:05:33
    x.' 里面的元素没有取共轭 x'里面的元素取了共轭
  • MATLAB复数操作与实数操作略有不同,尤其是关于共轭转置。 先定义复矩阵: // A code block A = [1+2i 2+3i;3+4i 5+8i]; A = 1.0000 + 2.0000i 2.0000 + 3.0000i 3.0000 + 4.0000i 5.0000 + 8.0000i 复矩阵A的...
  • 复数矩阵求逆运算

    2012-10-12 22:12:46
    复数矩阵求逆运算C++代码,可以准确的求其结果!
  • C++实现复数矩阵求逆 matlab inv

    千次阅读 2020-07-06 11:10:57
    C++实现复数矩阵求逆 matlab inv一、引言二、原理2.1 实数矩阵求逆2.2 复数矩阵求逆三、代码四、测试 一、引言 之前偶尔一次有用到将matlab转为C++语言的需求,其中matlab有一个inv函数可以非常方便的求矩阵的逆,...
  • 对常用的矩阵运算,函数,作图等应用的总结!对拟合工具的使用作了详细的介绍!
  • matlab中两个复数矩阵相乘代码计算机图形学–质量弹簧系统 开始:使用以下命令克隆此存储库 git clone --recursive http://github.com/alecjacobson/computer-graphics-mass-spring-systems.git 背景 阅读《计算机...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼有人帮忙么。我贴出程序k1=2;k2=3;k3=4;k4=5;k5=6;k6=7;a=0.45;x1=-6.5;x2=-5.5;x3=-4.5;x4=-3.5;x5=0;S11=k1*cos(a)*x1;S12=k1*cos(a)*x2;...S22=k2*c...
  • matlab中两个复数矩阵相乘代码计算机图形学–质量弹簧系统 开始:使用以下命令克隆此存储库 git clone --recursive http://github.com/alecjacobson/computer-graphics-mass-spring-systems.git 背景 阅读《计算机...
  • matlab复数

    2021-04-19 02:21:53
    第三章:MATLAB 的基础知识(基本符号,数据类型,运算符, 复数运算,三角函...matlab使用指导(2012)_数学_自然科学_专业资料。一、基础知识 1.1 常见数学函数 函数名 数学计算功能 abs(x) 实数的绝对值或复数的幅值 acos...
  • MATLAB进行矩阵运算 第1章 矩阵及其基本运算 MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本书从最基本的运算单元出发,介绍MATLAB的命令及其用法。 1.1 矩阵的表示 1.1.1数值矩阵的生成 1....
  • MATLAB面向复数运算的设计MATLAB面向复数运算的设计MATLAB的所有运算都是定义在复数域上的。这样设计的好处是:在进行运算时,不必像其他程序语言那样把实部和虚部分开来处理。为描述复数,虚数单位用预定义变量i或j...
  • Matlab 矩阵运算

    2021-04-22 03:29:59
    Copyright 2008说明:这一段时间用Matlab做了LDPC码的性能仿真,过程中涉及了大量的矩阵运算,本文记录了Matlab中矩阵的相关知识,特别的说明了稀疏矩阵和有限域中的矩阵。Matlab的运算是在矩阵意义下进行的,这里所...
  • MATLAB矩阵运算

    2021-04-24 20:33:12
    MATLAB是基于矩阵和数组计算的,可以直接对矩阵和数组进行整体的操作,MATLAB有三种矩阵运算类型:矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。其中,矩阵的代数运算应用最广泛。本文主要讲述矩阵的基本操作,...
  • 此函数计算矩阵的相互相干性。 输入:具有多于一列的实数或复数矩阵。 输出:相互的连贯性。
  • MATLAB矩阵及其数值运算

    千次阅读 2021-04-18 06:06:25
    matlab矩阵及其数值运算变量和数据操作变量与赋值1.变量命名在MATLAB6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,变量名区分字母的大小写。2.赋值语句(1) 变量=...
  • MATLAB矩阵运算部分知识总结
  • 一、前言 最近在企业实习,花了三个星期的时间肝了一个室内定位算法(雏形,还未优化),实现matlab和C的联写、联调,其难点...谨以此连载文档记录一下算法开发的关键--复数矩阵运算。 网上关于C语言实现矩阵运算的de
  • 使用的是matlab2017b,之前的2014好像不支持。 首先mex -setup,它自动使用VS2017,运行的结果为: mex -setup MEX 配置为使用 'Microsoft Visual C++ 2017 (C)' 以进行 C 语言编译。 警告: MATLAB C 和 Fortran API...
  • matlab中两个复数矩阵相乘代码计算机图形学–质量弹簧系统 开始:使用以下命令克隆此存储库 git clone --recursive http://github.com/alecjacobson/computer-graphics-mass-spring-systems.git 背景 阅读《计算机...
  • MATLAB矩阵及其运算

    千次阅读 2021-04-18 05:09:55
    第2章MATLAB矩阵及其运算2.1变量和数据操作2.2MATLAB矩阵2.3MATLAB运算2.4矩阵分析2.5矩阵的超越函数2.6字符串2.7结构数据和单元数据2.8稀疏矩阵2.1变量和数据操作2.1.1变量与赋值1.变量命名在MATLAB 6.5中,变量名...
  • Ez是一个关于phi和z的复数矩阵,假设行表示phi,列表示z,phi取值范围为-180~180(2度一个点),n取值范围为-90~90,z取值范围为-2.5~2.5(0.05一个点),h取值范围为-50~50,那么我根据公式求和运算计算结果和直接...
  • 关于MATLAB复数方面的应用 – MATLAB中文论坛2018-12-07最近,看到有不少朋友问MATLAB复数方面的应用问题,特此发个帖子,给大家分享点资料.matlab复数中的应用1.复数的生成复数生成语句(其中theta为复数辐角的...
  • 复数矩阵的加/减/乘运算涉及到其复数元胞(cell)的相加减运算,由于complex.h头文件中只给出了复数乘法运算,故而复数的加减运算函数需要自己定义功能。 二、矩阵加/减法运算复数矩阵复数矩阵之间的加/减法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,774
精华内容 2,309
关键字:

matlab复数矩阵的运算

matlab 订阅