MATLAB计算机视觉经典应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.9.3 改变形状

MATLAB中有大量内置函数可以对矩阵进行改变形状的操作,包括数组/矩阵的转置,数组/矩阵的平移和翻转,以及数组/矩阵尺寸的重新调整。

1. 数组/矩阵的转置

在MATLAB中,进行数组/矩阵的转置的最简单的方法是通过转置操作符('),使用时需要注意以下几点。

(1)对于有复数元素的数组/矩阵,转置操作符(')在变化数组形状的同时会将复数元素转化为其共轭复数。

(2)如果对复数数组/矩阵进行非共轭转置,则可以通过点转置操作符(.')实现。

(3)共轭和非共轭转置也可以通过MATLAB函数完成,函数transpose实现非共轭转置,其功能等同于点转置操作符(.')的功能;函数ctranspose实现共轭转置,其功能等同于转置操作符(')的功能。当然,上述这4种方法对于实数数组的转置,结果是一样的。

【例1-14】实现数组/矩阵的转置。

在实际使用中,由于操作符较简便,所以经常会使用操作符而不是转置函数来实现转置。但是在复杂的嵌套运算中,转置函数可能是唯一的可用方法。因此,两类转置方式读者都需要掌握。

2. 矩阵的翻转

MATLAB提供了4个函数以实现矩阵的翻转,如表1-4所示。

表1-4 矩阵翻转函数

【例1-15】矩阵的翻转。

3. 矩阵尺寸的调整

对于改变矩阵形状,还有一个常用函数reshape,它可以把已知矩阵改变成指定的行列尺寸。reshape函数的调用格式为:

将m行n列的矩阵A调整为a行b列的尺寸,并赋值为变量B,这里必须满足m.n=a.b。在尺寸调整前后,两个矩阵的单下标索引不变,即A(x)必然等于B(x)(只要x是符合取值范围要求的单下标数字)。也就是说,按照列优先原则把A和B的元素排成一列,结果必然是一样的。

【例1-16】矩阵尺寸的调整。