matlab双引号作用,matlab中单引号(')的含义是什么,以及如何将其改为python
简短回答:
MATLAB中的'算子是矩阵(共轭)转置算子。它使矩阵在维度上翻转,并得到矩阵的复共轭(第二部分是使人困惑的部分),简单的回答是,在Python中,a'的等价物是np.atleast_2d(a).T.conj()。在
稍长回答:
不要在MATLAB中使用',除非你真的知道自己在做什么。使用.',这是普通的转置。它相当于Python中的np.atleast_2d(a).T(无共轭)。如果您确定python中的a.ndim >= 2,那么您就可以使用a.T。如果您确定在Python中a.ndim == 1,那么可以使用a[None].T。如果您确定在Python中a.ndim == 0,那么转置是没有意义的,所以只需做任何您想做的事情。在
很长的答案:
转置的基本思想是将数组或矩阵翻转一个维度,因此请考虑以下内容:>> a=[1,2,3,4,5,6]
a =
1 2 3 4 5 6
>> a'
ans =
1
2
3
4
5
6
>> b=[1,2,3;4,5,6]
b =
1 2 3
4 5 6
>> b'
ans =
1 4
2 5
3 6
所以看起来很清楚,'做了一个转置。但这是欺骗:
^{pr2}$
那些底片是从哪里来的?他们不在原来的阵型里。原因在documentation中描述。MATLAB中的'算子不是正规转置算子,正规转置算子是.'。'运算符执行一个复共轭转置。它对矩阵进行转置,并对矩阵进行复共轭。在
问题是,这几乎永远不是你真正想要的。例如,这将导致代码看起来像预期的那样工作,但会悄悄地更改您的FFT数据。因此,除非您绝对肯定您的算法需要复杂的共轭转置,否则请使用.'。在
对于Python,Python转置操作符是.T。所以你认为:>>> a = np.array([[1, 2, 3, 4, 5, 6]])
>>> print(a)
[[1 2 3 4 5 6]]
>>> print(a.T)
[[1]
[2]
[3]
[4]
[5]
[6]]
>>> b = np.array([[1j, 2j, 3j, 4j, 5j, 6j]])
[[ 0.+1.j 0.+2.j 0.+3.j 0.+4.j 0.+5.j 0.+6.j]]
>>> (1j*np.ones((1,10))).T
[[ 0.+1.j]
[ 0.+2.j]
[ 0.+3.j]
[ 0.+4.j]
[ 0.+5.j]
[ 0.+6.j]]
注意想象部分没有任何否定。如果你想得到复共轭转置,你需要使用np.conj(a)或{}来获得复共轭(在转置之前或之后)。然而,numpy有自己的转置陷阱:>>> c = np.array([1, 2, 3, 4, 5, 6])
>>> print(c)
[1 2 3 4 5 6]
>>> print(c.T)
[1 2 3 4 5 6]
嗯?它什么也没做。原因是np.array([1, 2, 3, 4, 5, 6])创建了一个1D数组。转置是沿着特定的维度翻转数组。当只有一个维度时,这是没有意义的,所以转置什么都不做。在
“但是,”你可能会反对,“1D MATLAB矩阵的转置难道不起作用吗?”原因更为根本的原因是MATLAB和numpy如何存储数据。以Python为例:>>> np.array([[1, 2, 3], [4, 5, 6]]).ndim
2
>>> np.array([1, 2, 3, 4, 5, 6]).ndim
1
>>> np.array(1).ndim
0
这似乎是合理的。二维数组有二维,一维数组有一维,标量有零维。但在MATLAB中尝试同样的方法:>> ndims([1,2,3;4,5,6])
ans =
2
>> ndims([1,2,3,4,5,6])
ans =
2
>> ndims(1)
ans =
2
一切都有两个维度!MATLAB没有1D或0D数据结构,MATLAB中的所有东西都必须至少有2维(尽管可以在MATLAB中创建自己有效的1D或0D类)。所以在MATLAB中对你的“1D”数据结构进行转置是有效的,因为它实际上不是1D
共轭转置和1D转置问题都归结为基本数据类型MATLB和numpy的使用。MATLAB使用矩阵,矩阵本质上至少是2D,而nump则使用数组,数组可以有任意数量的维。MATLAB矩阵使用矩阵数学作为它们的正规运算(所以MATLAB中的a * b是一个矩阵乘积),而Python数组则使用逐元素数学作为它们的正规运算符(因此a * b是一个逐元素的乘积,相当于MATLAB中的a .* b)。MATLAB有逐元素运算符,numpy数组有矩阵运算符(虽然还没有矩阵转置,但正在考虑添加一个),因此这主要适用于默认操作。在
为了在Python中避免这个问题,有几种方法可以绕过它。在Python中使用None索引插入广告传统尺寸。所以对于一维数组a,a[None]将是一个二维数组,其中第一维的长度为1。如果事先不知道数组的维数是多少,可以使用np.atleast_2d(a),这将确保a至少有两个维度。所以0D变成2D,1D变成2D,2D保持2D,3D保持3D,4D保持4D,等等
也就是说,numpy有一个matrix类,在所有这些方面都与MATLAB的一样(它甚至有一个共轭转置运算符.H)。不要使用它。python社区已经围绕数组进行了标准化,因为实际上这几乎总是您想要的。这意味着大多数Python工具都需要数组,如果给定了矩阵,许多工具就会出现故障,或者将它们转换为数组。所以只需使用数组。在
matlab双引号作用,matlab中单引号(')的含义是什么,以及如何将其改为python相关推荐
- ora-01740: 标识符中缺失双引号_sql语句中单引号的使用
1.反引号用于表和列标识符,但仅在标识符是MySQL保留关键字时,或者当标识符包含空格字符或超出有限集的字符时才需要.通常建议避免使用保留关键字尽可能作为列或表标识符,避免引用问题. 单引号应该用于V ...
- python单双三引号区别_python中单引号,双引号,多引号区别_python中单双引号
python中单引号,双引号,多引号区别 先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使 ...
- html中单引号表示,HTML中单引号的妙用
之前在做在很理应于是会商器则,,是各近或多,用维网页开发时,被以下这一个微不足道的小问题把头搞大了,具体问题已经做了处理,现把问题所在整理如下在重说道.础过学开概码数项遍间里哦行览屏屏定处..容标中钮 ...
- matlab数学建模作用,matlab数学建模基础
1.数据的导入和保存 1.1数据的导入 matlab中导入数据的函数通常为load load matlab.mat matlab中常用的导入数据的函数为importdata,用法如下: importe ...
- shell mysql中单引号_Shell脚本中单引号(‘)和双引号(“)的使用区别
在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用"$param"这种带双引号的格式,但也有出现使用'$param'这种带 ...
- mysql sql语句 引号_sql语句中单引号,双引号的处理方法
关于Insert字符串 很多同学都在(单引号,双引号)这个方面发生了问题,其实主要是因为数据类型和变量在作怪. 下面我们就分别讲述,虽然说的是Insert语句, 但是Select.Update.Del ...
- matlab里subsystem作用,matlab中的subsystem是什么,怎么建立?
是MATLAB子系统!请点击以下地址查看 http://www.91xiu.com/edu/f/2008/12/29/4289.shtmlMatlab 子系统的创建.装帧及受控执行 2008-10-2 ...
- oracle 切割字符串加引号_oracle存储过程中单引号及字符串拼接处理
在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义.单引号的使用是就近配对,即就近原则.而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为转义符,如果第二个单引号后 ...
- matlab 双馈,基于Matlab的双馈调速系统研究
1.双馈调速系统的构成[1]本文引用地址:http://www.eepw.com.cn/article/163904.htm 对于绕线式异步电机,定子接有固定频率(50Hz)的工业电源,转子侧接有频率 ...
最新文章
- socket connect阻塞和非阻塞处理
- iphone退款申请教程_王者荣耀账号注销退钱吗?王者荣耀账号注销100%退款教程...
- b树删除节点每次只能删一个吗_面试官,请不要问我B+树了!!
- 奥密克戎新毒株XE出现!传播速度快10%
- React-Context
- 计算机视觉与深度学习,看这本书就够了
- Java基础:类加载器
- ES6公用跑马灯抽奖组件的封装及使用
- 为什么链接不上mysql数据库_java链接不上数据库,怎么解决!
- Java面向对象——基础2 封装、继承、多态
- 【codevs2098】【Tyvj1625】化工厂装箱员,煞笔的人打煞笔的DP
- ROS入门-16.tf坐标系广播与监听的编程实现
- 面试常备题(三)----顺时针打印矩阵
- linux-0.11 内核源码学习笔记一(嵌入式汇编语法及使用)
- ECMAScript5 [].reduce()
- python时间处理方法_基于python时间处理方法(详解)
- 一键解决局域网共享之批处理
- 安徽大学高等数学习题册(上)(第一章)
- 在家搭建 Minecraft 服务器,和远程小伙伴一起联机
- POI DataValidation 删除数据有效性验证