矩阵转置是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矩阵转置的更多相关文章

  1. [置顶] 【其他部分 第一章 矩阵】The C Programming Language 程序研究 【持续更新】

    其他部分 第一章 矩阵 一.矩阵的转置   问题描述: 编写函数,把给定的任意一个二维整型矩阵转换为其转置矩阵. 输入: 1 2 3 4 5 6 输出: 1 4 2 5 3 6 分析 题目要求编写一个 ...

  2. matlab global 不能传向量/矩阵

    matlab global 不能传向量/矩阵 只能传1个数值 而函数变量可以传向量/矩阵

  3. [置顶] 创建GitHub技术博客全攻略

    [置顶] 创建GitHub技术博客全攻略 分类: GitHub2014-07-12 13:10 19710人阅读 评论(21) 收藏 举报 githubio技术博客网站生成 说明: 首先,你需要注册一 ...

  4. Matlab、R向量与矩阵操作 z

    已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作   描    述 Matla ...

  5. 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(),然后输入 ...

  6. 相机标定过程(opencv) + matlab参数导入opencv + matlab标定和矫正

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

  7. Matlab学习笔记1—MATLAB基础知识

    1.1  MATLAB系统环境 1.MATLAB操作界面的组成 (1)MATLAB主窗口 (2)命令行窗口:命令行窗口用于输入命令并显示命令的执行结果. (3) 当前文件夹窗口 如何设置当前文件夹呢? ...

  8. 在UWP中页面滑动导航栏置顶

    最近在研究掌上英雄联盟,主要是用来给自己看新闻,顺便copy个界面改一下段位装装逼,可是在我copy的时候发现这个东西 当你滑动到一定距离的时候导航栏会置顶不动,这个特性在微博和淘宝都有,我看了@ms ...

  9. [python][matlab]使用python调用matlab程序

    问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...

随机推荐

  1. ios专题 - 安全

    iOS通过以下几种机制来保全整个系统的安全性: 一:系统结构 所有iOS设备中,系统与硬件都高度集成,从系统启动.系统更新.应用的安装.应用的运行时等多个方面来保全系统的安全,具体包括: 1:所有iO ...

  2. MFC中控件的TAB顺序 ----转载

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

  3. 过滤HTML

    过滤HTML public static string NoHTML(string html){ string[] strArray2 = new string[] { "font" ...

  4. Centos 6 设置静态 IP 地址

    编辑文件进行IP设置: [root@test1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 原文件内容前面加#被注释掉 下面为新加的内容 #DEV ...

  5. line-height行高使用技巧

    若父元素标签高度一定,假设为150px,子元素需要垂直居中,再重新给子元素设置一个行高就好了,省事省力

  6. WPF自定义窗口(Windows Server 2012 Style)

    先上图 新建CustomControl,名:HeaderedWindow Themes\Generic.aml文件夹下加入 笔刷,转换器 <SolidColorBrush x:Key=" ...

  7. 使用PHP对文件进行压缩解压(zip)

    使用虚拟主机进行文件上传时最常用的工具莫过于FTP了,但是使用FTP有一个弊端就是文件太多时上传或下载速度比较慢,如果上传时将文件打包,上传后在 空间解压缩,同样下载前将文件打包压缩以压缩包的形式下载 ...

  8. easy UI demo 含数据库加载示例

    easyUI 部分代码在Googlecode 托管时而被抢此文件包含了所有官方demo,作为备份 下载地址http://pan.baidu.com/s/1pJ9hS5H

  9. phpcms v9使用GET调用指定id文章内容、页面数据方法

    不知道大家有没有相同的体会?在使用Phpcms V9建站调用数据的时候,基础的数据用默认的模板的调用语句就好了,但复杂不常见的数据怎么调用呢?我们技术可能会研究半天,怀着探索的精神不断尝试.孜孜不倦. ...

  10. Reporting Services 钻取报表、子报表

    一.钻取报表 1.概念 钻取报表是指用户通过单击其他报表中的链接打开的报表.钻取报表通常包含某原始汇总报表中所包含的某项的详细信息. 例如,在此图中,销售额汇总报表列出了销售订单和总额.当用户单击该汇 ...