03_matalb之矩阵操作

本文详细介绍了MATLAB中矩阵的创建(如ones, zeros, eye, magic, rand等),操作函数(如加减乘除、转置、重塑、排序、索引转换等),以及常用算术运算。涵盖了从基本矩阵生成到高级操作的全面指南,适合初学者和进阶用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

one(n)构建nXn的1矩阵,矩阵的元素全部是1
one(m,n)构建mXn的1矩阵
ones(size(A))构建一个和矩阵A同样大小的1矩阵
zeros(n) 0矩阵
zeros(m,n) 
zeros(size(A)) 
eye(n)单位矩阵
eye(m,n) 
eye(size(A)) 
magic(n)构建一个nXn的矩阵,其每一行每一列的元素之和都相等
rand(n)构建一个nXn的矩阵,其元素为0--1之间均匀分布的随机数
rand(m,n)构建一个mXn的矩阵,其元素为0--1之间均匀分布的随机数
fliplr(A)矩形每一行均进行逆序排序
flipud(A) 矩阵每一列均进行逆序排列
rot90(A)    生成一个由矩阵A逆时针旋转90度而得到的新矩阵
rot90(A,k)生产一个由矩阵A逆时针旋转k*90度而得到的新矩阵
reshape(A,m,n) 生成一个mXn的矩阵,其元素以线性索引的顺序从矩阵A中取得,A中元素个数必须为mXn个
reshape(A,[m n ...p])创建一个和矩阵A有相同元素的mXnX.....Xp多维元素
shiftdim(A,n)矩阵的列移动n步,n为正数,矩阵向左移动,n为负数,向右移动
squeeze(A)返回没有空维的矩阵A
cat(dim,A,B) 将矩阵组合A和B组合成一个dim维的多维矩阵
permute(A,order)根据向量order来改变矩阵A中的维书顺序
ipermute(A,order)根据命令permute的逆变换
sort(A)对一维矩阵或二维矩阵进行升序排序,并返回升序后的矩阵,当A是二维矩阵时,对矩阵的每一列分别进行排序
sort(A,dim)dim=1时,对列进行排序,当dim=2时,对行进行排序
sort(A,dim,mode)mode为ascend时,升序排序,mode为descend时,降序排序
[B,IX]=sort(A,....)IX为排序后备元素在元矩阵中的行位置或列位置的索引

矩阵合并

C=[A B]在水平方向合并矩阵A和B

C=[A;B]在竖直方向上合并矩阵A和B

A=rand(3)

A'共轭矩阵

 

矩阵输出

A(1)  将二维矩阵A重组为一维数组,返回数组中的第一个元素

A(:,j)  返回二维矩阵A中第j列列向量

A(i,:)  返回二维矩阵A中第i行行向量

A(:,[j,k])  返回二维矩阵A中的第j列到第k列列向量组成的子矩阵

A(I:k,:) 返回二维矩阵A中第i行到第k行行向量组成的矩阵

A(i:k,j:l)  返回二维矩阵A中第i行到第k行行向量,和第j列到第l列列向量的交集组成的子矩阵

A(:) 将矩阵A中的每列合并成一个长的列向量

A(j:k) 返回一个行向量,其元素为A(:)中的第j个元素到第k个元素

A([j1 j2 ..... ])返回一个行向量,其中的元素为A(:)中的第j1,j2....个元素

A(:,[j1 j2 ...])  返回矩阵A中第j1,j2,..列的列向量

A([i1 i2 ...],:)  返回矩阵A中的第i1行,i2行。。。的行向量

A([i1 i2 ...],[j1 j2 ...])  返回矩阵第i1行,第i2行。。和第j1列,第j2列等的元素

 

矩阵中某一元素的单下标索引值和双下标索引值之间,可以通过MATLAB内部函数进行转换,语法格式为: IND=sub2ind(siz,i,j)

其功能是将双下标索引值转换为单下标索引值,其中siz是一个包含两个元素的数组,一般直接用size(A)表示,i与j是双下标索引中的行、列的值,IND是转换后的单下标索引值

[I  J]=ind2sub(siz,ind)

 

矩阵操作函数

ind=find(X)该函数查找矩阵X中的非零元素,函数返回这些元素的单下标
[I,j]=find(X)该函数查找矩阵X中的非零元素,函数返回这些元素的双下标i和j
B=sum(A)该函数对矩阵A的元素求和,返回由矩阵A各列元素的和组成的向量
B=sum(A,dim)该函数返回在给定的维数dim上元素的和,dim=1时,计算矩阵A各列元素的和,dim=2时,计算矩阵A各行元素的和
B=prod(A)该函数对矩阵A的元素求积,返回由矩阵A各列元素的积组成的向量
B=prod(A,dim)dim=1,计算矩阵A各列元素的积,dim=2,计算矩阵A各行元素的积
Y=diff(X)计算矩阵各列元素的差分
Y=diff(X,n) 计算矩阵各列元素的n阶差分
Y=diff(X,n,dim) 当dim=1时,计算矩阵各列元素的差分,dim=2时,计算矩阵各行元素的差分
isempty(A)检测矩阵是否为空
isscalar(A)检测矩阵是否是单元素的标量矩阵
isvector(A)检测矩阵是否是只具有一行或一列元素的一维向量
issparse(A)检测数组是否是稀疏矩阵
n=ndims(X)获取矩阵的维数
[m,n]=size(X)获取矩阵在各维上的长度
n=length(X)获取矩阵最长维的长度
n=numel(X)获取矩阵元素的个数
isnumeric检测矩阵元素是否为数值型变量
isreal实数数值型
isfloat浮点数值型
isinterger整形变量
ischar 字符型
islogical 逻辑类型
isstruct结构体型
  

算数运算

A+B  A与B相加,A、B为数值或矩阵

A-B  A与B相减,A、B为数值或矩阵

A*B  A与B相乘,A、B为数值或矩阵

A.*B  A与B相应元素相乘,A,B为同维度的矩阵

A/B  A与B相除,A、B为数值或矩阵

A./B  A与B相应元素相除,A、B为相同纬度的矩阵

A^B  A的B次幂,A、B为数值或者矩阵

A.^B  A的每个元素的B次幂,A为矩阵,B为数值

 

 

 

MATLAB 中,矩阵乘法可以通过多种方式进行实现。以下将详细介绍如何完成矩阵的行列相乘并求和的过程,并提供具体的代码示例。 ### 矩阵乘法基础 矩阵乘法遵循线性代中的规则,前一个矩阵的列必须等于后一个矩阵的行才能进行合法的乘法操作[^2]。当两个矩阵 $ A $ 和 $ B $ 进行乘法时,结果矩阵 $ C $ 的第 $(i,j)$ 个元素是由 $ A $ 的第 $ i $ 行与 $ B $ 的第 $ j $ 列逐元素相乘再求和得到的[^1]。 ### 示例代码 #### 方法 1:手动实现行列相乘并求和 通过嵌套循环逐一计算每个行列组合的点积,并将其累加到最终结果中。 ```matlab % 定义两个矩阵 A = [1, 2; 3, 4]; % 矩阵 A (2x2) B = [5, 6; 7, 8]; % 矩阵 B (2x2) % 初始化变量存储结果 sum_result = 0; % 手动实现行列相乘并求和 [m, n] = size(A); % 获取矩阵 A 的尺寸 [p, q] = size(B); % 获取矩阵 B 的尺寸 if n ~= p error('Matrix dimensions do not match for multiplication.'); end for i = 1:m for j = 1:q sum_result = sum_result + dot(A(i,:), B(:,j)); % 计算点积并累加 end end disp('手动实现行列相乘并求和的结果:'); disp(sum_result); ``` #### 方法 2:使用内置函 `sum` 和 `.*` 利用 MATLAB 提供的强大工具简化过程。这里我们采用矩阵乘法结合求和的方式来达到目的。 ```matlab % 定义两个矩阵 A = [1, 2; 3, 4]; % 矩阵 A (2x2) B = [5, 6; 7, 8]; % 矩阵 B (2x2) % 使用矩阵乘法直接得出结果 C = A * B; % 矩阵乘法 sum_result = sum(C(:)); % 将所有元素求和 disp('使用矩阵乘法和求和的结果:'); disp(sum_result); ``` 以上两种方法都可以有效地解决行列相乘并求和的问题。第一种方法展示了底层原理,而第二种方法则体现了 MATLAB 高效便捷的特点。 --- ### 解释与注意事项 - **dot 函**:用于计算两向量之间的点积[^4]。 - 如果尝试对不匹配维度的矩阵执行乘法,则会抛出错误提示“Matrix dimensions must agree”。因此,在实际编程过程中应始终注意验证输入据的有效性和一致性[^3]。 --- ### 总结 无论是通过手写逻辑还是调用高级命令,MATLAB 均提供了灵活且强大的支持来进行复杂的矩阵运算。对于新手而言,理解基本概念至关重要;而对于有经验的开发者来说,掌握优化技巧有助于提升性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值