[置顶] [MATLAB技术贴]漫谈MATLAB矩阵转置
矩阵转置是matlab最基本的操作了,但这个基本操作,也是很多初学者容易出现问题的地方。本帖通过几个实例演示matlab矩阵转置的操作。
方法一:' 运算符与 .' 运算符
>>a = rand(3,5)
a =
0.9340 0.4694 0.1622 0.5285 0.2630
0.1299 0.0119 0.7943 0.1656 0.6541
0.5688 0.3371 0.3112 0.6020 0.6892
>>b = a'
b =
0.9340 0.1299 0.5688
0.4694 0.0119 0.3371
0.1622 0.7943 0.3112
0.5285 0.1656 0.6020
0.2630 0.6541 0.6892
>> b2 = a.'
b2 =
0.9340 0.1299 0.5688
0.4694 0.0119 0.3371
0.1622 0.7943 0.3112
0.5285 0.1656 0.6020
0.2630 0.6541 0.6892
是不是说明.'运算符和‘运算符的结果一致呢?其实不然,.'运算类似于.*,./,是作用于非共轭矩阵的(non-conjugate),而'运算符是作用于复共轭矩阵转置的。
看看下面的例子
>>a = rand(3,5)+i*rand(3,5)
a =
0.4039 + 0.6477i 0.9421 + 0.2963i 0.0598 + 0.6868i 0.8212 + 0.6256i 0.1690 + 0.9294i
0.0965 + 0.4509i 0.9561 + 0.7447i 0.2348 + 0.1835i 0.0154 + 0.7802i 0.6491 + 0.7757i
0.1320 + 0.5470i 0.5752 + 0.1890i 0.3532 + 0.3685i 0.0430 + 0.0811i 0.7317 + 0.4868i
>> b = a'
b =
0.4039 - 0.6477i 0.0965 - 0.4509i 0.1320 - 0.5470i
0.9421 - 0.2963i 0.9561 - 0.7447i 0.5752 - 0.1890i
0.0598 - 0.6868i 0.2348 - 0.1835i 0.3532 - 0.3685i
0.8212 - 0.6256i 0.0154 - 0.7802i 0.0430 - 0.0811i
0.1690 - 0.9294i 0.6491 - 0.7757i 0.7317 - 0.4868i
>> b2 = a.'
b2 =
0.4039 + 0.6477i 0.0965 + 0.4509i 0.1320 + 0.5470i
0.9421 + 0.2963i 0.9561 + 0.7447i 0.5752 + 0.1890i
0.0598 + 0.6868i 0.2348 + 0.1835i 0.3532 + 0.3685i
0.8212 + 0.6256i 0.0154 + 0.7802i 0.0430 + 0.0811i
0.1690 + 0.9294i 0.6491 + 0.7757i 0.7317 + 0.4868i
是不是有区别了?其实很多初学者用惯了',不怎么用.',如果运算在实数域上,是没问题,如果是复数域,这样的错误,又有几人能检查得出来呢?
方法二:transpose函数和ctranspose函数
transpose函数类似于 .’ 运算符,而ctranspose函数类似于 ' 运算符
matlab的运算符可以理解成函数的一种调用方式,比如你在执行a+b的时候,其实matlab内部调用的是plus(a,b)这个函数。
这里的transpose也是这种意思,在碰到 a.' 运算时,matlab就调用transpose(a)去计算这个 .' 运算符
方法三:permute与ipermute函数
permuter用于多维矩阵的转置,ipermute是其逆函数,虽然编程里面的函数与数学意义上的函数不同,但这里逆的概念是一致的。
列举permute与ipermute的例子如下
>>a = cat(3,eye(2),2*eye(2),3*eye(2))
a(:,:,1) =
1 0
0 1
a(:,:,2) =
2 0
0 2
a(:,:,3) =
3 0
0 3
>>B = permute(a,[3 2 1])
B(:,:,1) =
1 0
2 0
3 0
B(:,:,2) =
0 1
0 2
0 3
>>C = ipermute(B,[3 2 1])
C(:,:,1) =
1 0
0 1
C(:,:,2) =
2 0
0 2
C(:,:,3) =
3 0
0 3
可以看到,C和a是一样的。
Tips:先前有没有提到,转置操作同样适用于元胞数组呢?
>> a = cell(3,5)
a =
[] [] [] [] []
[] [] [] [] []
[] [] [] [] []
>> a'
ans =
[] [] []
[] [] []
[] [] []
[] [] []
[] [] []
The end
关注NewCloudTech微博,每日更新编程知识用法,提高编程水
平,就从关注NewCloudTech开始!
[置顶] [MATLAB技术贴]漫谈MATLAB矩阵转置的更多相关文章
- [置顶] 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】
其他部分 第一章 矩阵 一.矩阵的转置 问题描述: 编写函数,把给定的任意一个二维整型矩阵转换为其转置矩阵. 输入: 1 2 3 4 5 6 输出: 1 4 2 5 3 6 分析 题目要求编写一个 ...
- matlab global 不能传向量/矩阵
matlab global 不能传向量/矩阵 只能传1个数值 而函数变量可以传向量/矩阵
- [置顶] 创建GitHub技术博客全攻略
[置顶] 创建GitHub技术博客全攻略 分类: GitHub2014-07-12 13:10 19710人阅读 评论(21) 收藏 举报 githubio技术博客网站生成 说明: 首先,你需要注册一 ...
- Matlab、R向量与矩阵操作 z
已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作 描 述 Matla ...
- Matlab、R向量与矩阵操作
Matlab.R向量与矩阵操作 描 述 Matlab R 1 建立行向量v=[1 2 3 4] v=[1 2 3 4] v<-c(1,2,3,4)或v<-scan(),然后输入 ...
- 相机标定过程(opencv) + matlab参数导入opencv + matlab标定和矫正
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- Matlab学习笔记1—MATLAB基础知识
1.1 MATLAB系统环境 1.MATLAB操作界面的组成 (1)MATLAB主窗口 (2)命令行窗口:命令行窗口用于输入命令并显示命令的执行结果. (3) 当前文件夹窗口 如何设置当前文件夹呢? ...
- 在UWP中页面滑动导航栏置顶
最近在研究掌上英雄联盟,主要是用来给自己看新闻,顺便copy个界面改一下段位装装逼,可是在我copy的时候发现这个东西 当你滑动到一定距离的时候导航栏会置顶不动,这个特性在微博和淘宝都有,我看了@ms ...
- [python][matlab]使用python调用matlab程序
问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...
随机推荐
- python模块学习 logging
1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messa ...
- CentOS6.5使用本地光盘做yum源 (参考:http://www.jb51.net/os/RedHat/43343.html)
一.使用光盘做yum源安装软件 mkdir /media/CentOS #新建CentOS挂载目录 mount -t auto /dev/cdrom /media/CentOS #挂载CentOS光 ...
- Git版本控制工具使用:Error pulling origin: error: Your local changes to the following files would be overwritten by merge
摘自: CSDN 逆觞 git在pull时,出现这种错误的时候,可能很多人进进行stash,相关stash的请看:Error pulling origin: error: Your local cha ...
- ubuntu 安装apache2,mysql,php5,phpmyadmin等软件
1.安装apache2 sudo apt-get install apache2 输入Y回车 apache2 安装完成 检测:在浏览器输入localhost 出现It works则成功. 2. ...
- C语言怎么计算程序所花时间
在函数之前和之后取得系统的时间,然后相减就是函数执行时间,不过在取得系统时间的时候,最小单位是微秒 具体代码如下: #include<stdio.h> #include<iostre ...
- ServiceStack.RabbitMQ在站点中使用时导致静态页面无法正常解析
当站点中集成ServiceStack.RabbitMQ时快速处理异步请求时,官方建议初始化如下: public class AppHost : AppHostHttpListenerBase { pu ...
- React/React Native 的ES5 ES6写法对照表-b
很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...
- IntraWeb.v14.0.32安装及破解指南
一.下载 首先从这里下载14.0.32版本的IntraWeb: 链接:http://pan.baidu.com/s/1c0rjnKO 密码:8kv2 二.卸载旧版 1. 我的Delphi版本是XE6, ...
- C#(asp.net)备份还原mssql数据库代码【转】
采集自互联网,未验证..... 如果我们使用虚拟主机为网站空间,这时如果需要备份和还原msssql数据库是非常麻烦,如果在网站后台管理当中加入对msssql数据库的操纵,可以使我们对数据库的备份和还原 ...
- GBin1插件推荐之马可波罗(Marco Polo),jQuery的自动补齐插件 - Autocomplete Plugin
让我们Google一下"jQuery autocomplete plugin"(jquery自动补齐插件).在过去的4年中,我已经Google了很多次这个组合了.然而结果并没有变化 ...