![MATLAB/Simulink权威指南:开发环境、程序设计、系统仿真与案例实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/629/27111629/b_27111629.jpg)
2.2 矩阵的修改
2.2.1 矩阵部分替换
MATLAB语言可以部分替换矩阵的某个值、某行或者某列的值,常用下面的格式:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P63_28723.jpg?sign=1738884837-qRLAhvSASHsCLdXEq9AXbDAZyF0fqn6Z-0-f80c5aa23ed66aa9121e6b67c29a9044)
其中:
(1)A(m,n)=a1表示替换矩阵A中的第m行,第n列元素为a1;
(2)A(m,:)=[a1,a2,…,an]表示替换矩阵A中第m行的所有元素为a1,a2,…,an;
(3)A(:,n)=[a1,a2,…,am]表示替换矩阵A中第n列的所有元素为a1,a2,…,am。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P63_28725.jpg?sign=1738884837-jPtlUohhUof6jS6w2ZRSBbvXWCPxYbXp-0-88a604b0fe8422f69041b0b815618939)
2.2.2 矩阵部分删除
MATLAB语言可以部分删除矩阵行或者列,常用下面的格式:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P64_28726.jpg?sign=1738884837-L8qVpQmCn0TGel7C92X7xDpwZPm1o7QU-0-3278cb444c2d7e33eb4d4094b6adafa4)
其中:
(1)A(:,n)=[]表示删除矩阵A的第n列;
(2)A(m,:)=[]表示删除矩阵A的第m行。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P64_28728.jpg?sign=1738884837-rEieZLlscVMlMNC0W5Bn6k8U5JrJbRNP-0-8df3fb95527e1b2a877503488c043ad2)
2.2.3 矩阵部分扩展
MATLAB语言可以部分扩展矩阵,生成大的矩阵,常用下面的格式:
1.M=[A;B C]
其中:
(1)A为原矩阵,B和C为要扩展的元素,M为扩展后的矩阵;
(2)需要注意,B和C的行数都要相等;
(3)B和C的列数之和要与A的列数相等。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P64_28729.jpg?sign=1738884837-cD4pfqjIX5cW99fGRxPH6c8rwVjnRaeA-0-a03f1bd4cc353107dfd7c478567977f9)
2.平铺矩阵函数
MATLAB语言可以利用平铺矩阵函数repmat扩展矩阵,函数的调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P65_28730.jpg?sign=1738884837-HyYDO0C4BULHP0vb7QMADrGMEpRvuS3p-0-1c0249a69782d16d76325b6cfa5012b5)
其中,M=repmat(A,m,n)表示将矩阵A复制扩展为m×n块。例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P65_28731.jpg?sign=1738884837-32JgUFXmt4saamHlmkkPhcQ0j1vhzGW3-0-a5fb866584bb93ba73ea569df0e1fc57)
3.指定维数拼接函数
MATLAB语言可以利用指定维数拼接函数cat拼接矩阵,函数的调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P65_28732.jpg?sign=1738884837-638LGOgO2UrRYzWeiu7d0Fp6KoQmBeB0-0-97cbaef06ae6aef52e081d47b6e2ef44)
其中:
(1)M1=cat(1,A,B)垂直拼接;
(2)M2=cat(2,A,B)水平拼接;
(3)M3=cat(3,A,B)三维拼接。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P65_28734.jpg?sign=1738884837-7lX4Ve96stq0RvKx12gCDqVpxHXvQz3i-0-543cf833d3851dffc3e2c6f35f91555c)
2.2.4 矩阵结构变换
MATLAB语言可以利用函数变换矩阵的结构,常用以下几种函数。
1.上下行对调
MATLAB语言可以用函数flipud上下变换矩阵的结构,常用下面的格式:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P66_28735.jpg?sign=1738884837-aXEVlqYsr8c0xGfcd69XvSYfG8sElO8P-0-4751a3cdd4e9a16720e76212eccc0610)
其中,M=flipud(A)表示将矩阵A的行元素上下对调,列数不变。例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P66_28736.jpg?sign=1738884837-go0Wl6292pwbf8yEs93uEM4N4GTtdwIf-0-b66e0001cd134b01f62e1a75e572463e)
2.左右列对调
MATLAB语言可以用函数fliplr左右变换矩阵的结构,函数的调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P66_28737.jpg?sign=1738884837-aeh3OMev6D2BNpRjbKtHGGrp0wVCyfeF-0-10b24d6d49b8035516da943dce91c923)
其中,M=fliplr(A)表示将矩阵A的列元素左右对调,行数不变,相当于将矩阵A镜像对调。例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P66_28738.jpg?sign=1738884837-KEMhgQWtDecFCX9LcamzOaJYMm24btln-0-40f6a7978862eef0dc6881329c3ac6b1)
3.逆(顺)时针旋转
MATLAB语言可以用函数rot90旋转矩阵的结构,函数的调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P66_28741.jpg?sign=1738884837-XK08y6FFU6qR8jc1AEM3qEtlJZqGnsYV-0-2822e89ecd68b5f1b010ca69fed593e3)
其中:
(1)M1=rot90(A)表示将矩阵A逆时针旋转90°;
(2)M2=rot90(A,k)表示将矩阵A旋转k倍的90°,当k>0时,逆时针旋转,当k<0时,顺时针旋转。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P67_28743.jpg?sign=1738884837-Ir41rpau8LUCFIDPQp8cpZLzkBMGVCim-0-084aecdb5c7f2afa459ce384bce8dc4d)
4.转置
MATLAB语言可以用转置实现矩阵结构的改变,转置用“'”运算符,调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P67_28744.jpg?sign=1738884837-rvD9HtWEIUI91wcgPutDLgT65cvmIZWu-0-006a26f84259852e02a4066ab4cdafa3)
其中:
(1)当A为实数矩阵时,转置的运算规则是矩阵的行变列,列变行;
(2)当B为复数矩阵时,转置的运算规则是先将B取共轭,然后行变列,列变行,也就是Hermit转置。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P67_28746.jpg?sign=1738884837-5GOy5y4Qj2PasZAarQcDqdogEupWMXEq-0-dc49f68efa26f42b8a764a3180e5857b)
5.矩阵的变维
MATLAB语言可以用函数reshape实现矩阵变维,函数的调用格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P68_28748.jpg?sign=1738884837-Bw6qtPMUzo7UQxrYRI5IHU9X9RgrN08r-0-4c916de5c37ab84acc613dff7de970a4)
其中,M=reshape(A,m,n)表示以矩阵A的元素构成m×n维M矩阵。显然,M中元素的个数与A相同。
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P68_28750.jpg?sign=1738884837-O9EjC9qCv7zJH52TtgpAkuTmsOlHvOSB-0-fec37db0b89eaaa110c3c5ae700aa5f6)