matlab矩阵计算常见操作用法总结

matlab矩阵计算常见操作用法总结

整理于 2022.12.2 ——23:11

clc;clear;
%% 矩阵创建
% ones 产生矩阵元素全为 1 的矩阵
% zeros产生矩阵元素全为 0 的矩阵
% eye产生单位矩阵,即主对角线上的元素为 1,其他元素全为0
% magic(n) 产生魔方矩阵,即每行、每列之和相等的矩阵 
% rand产生 0~1 均匀分布的随机数 Y = rand(n) Y = rand(m,n)
% randn产生均值为 0,方差为 1 高斯分布的随机数 Y = randn(n) Y = randn(m,n)
% randperm产生整数 1~n 的随机排列 p = randperm(n) 
a = linspace(-6,6,4) % 等距向量
b = logspace(-6,6,4) % 对数等距的向量

%% 矩阵合并
% 表达式 C=[A B]在水平方向合并矩阵 AB,而表达式 C=[A;B]在竖直方向合并矩阵 AB
% repmat(A,M,N)通过复制矩阵来构造新的矩阵B = repmat(A,M,N) 得到 M*NA 的大矩阵
% blkdiag用已知矩阵来构造块对角化矩阵Y = blkdiag(A,B,...)

%% 矩阵行列的删除
% 要删除矩阵的某一行或者是某一列,只要把该行或者该列赋予一个空矩阵[]即可 
C = magic(4)
C([2],:) = []  %C([行数],:) = []; C(:,[列数]) = []; 
C(:,2:3) = []  % b(起始行数:终止行数,:) = [];  b(:,起始列数:终止列数) = [];

%% 矩阵行列求和
sum1 = sum(C(:,2))   % 第二列元素和(方法一)
sum2 = sum(C(1:3,2)) % 第二列元素和(方法二)

%% 矩阵尺寸信息
X = magic(6)
% isempty()专门用于判断一个矩阵是否为空矩阵 如果 A 为空矩阵则返回 1,否则返回 0isempty(X) 
%length矩阵最长方向的长度
n1 = length(X) %相当于 max(size(X))
%ndims矩阵的维数
n2 = ndims(X) %矩阵的维数
%numel矩阵的元素个数
n3 = numel(X) %矩阵的元素个数
%size矩阵在各个方向的长度
n4 = size(X) %返回的大小信息以向量方式存储
[m,n] = size(X) %返回的大小信息以分开存储
%利用矩阵尺寸信息:
mean1 = sum(X(:))/numel(X) % 矩阵X所有元素平均值:矩阵和/总个数
mean2 = mean(X(:)) % 矩阵X所有元素平均值:mean函数

%% 矩阵数据类型
D = class(X) %class 返回输入数据的数据类型

%% 矩阵结构的改变
%reshape按照列的顺序重新排列矩阵元素
B1 = reshape(X,m,n) %把矩阵 X 变为 m*n 大小
%rot90旋转矩阵 90°
B2 = rot90(X) %旋转矩阵 90°
B3 = rot90(X,1) %旋转矩阵 k*90°,k 为整数
%fliplr以竖直方向为轴做镜像
B4 = fliplr(X)
%flipud以水平方向为轴做镜像
B5 = flipud(X)
%flipdim以指定的轴做镜像
B6 = flipdim(X,2) %dim=1 以水平方向为轴做镜像, %dim=2 以竖直方向为轴做镜像
%transpose矩阵的转秩
B7 = transpose(X)
B8 = X.'

%% 稀疏矩阵
A = [ 0 0 1 0;0 2 0 0;3 0 0 0;0 0 4 0];
E1 = sparse(A) % 转为稀疏矩阵
E2 = full(E1) % 稀疏矩阵转为满矩阵
%sparse()函数来直接创建稀疏矩阵 sparse(i,j,s,m,n) 
%其中 i和 j 分别是稀疏矩阵非零元素的行和列指标,s 为相应的非零元素的值。m 和 n 分别是矩阵的行高度和列高度。
E3 = sparse([1,2,3,4],[3,2,1,3],[1,2,3,4],4,4) 
%speye(m,n) 创建单位稀疏矩阵; 
%spones(S) 把矩阵中的非零元素的值改为1的稀疏矩阵;
%sprand(S) 创建非零元素为均匀分布的随机数的稀疏矩阵
%sprandn(S) 创建非零元素为高斯分布的随机数的稀疏矩阵 sprandn(m,n,density) 创建非零元素值密度为 density的 m*n 大小的高斯分布的随机数
% 为了尝试下面函数的用法,可以加载 MATLAB 7.0 自带的稀疏矩阵 west0479
load west0479
whos west0479
nnz(west0479) % 得到该矩阵非零值的个数
spy(west0479) % 查看稀疏矩阵 west0479 的非零值的分布图

%% 运算符和特殊符号
% A.’  矩阵转秩。当矩阵是复数时,不求矩阵的共轭
% A’   矩阵转秩。当矩阵是复数时,求矩阵的共轭转秩
% A^B   矩阵乘方
% A.^B  矩阵元素的乘方。当 A 为方阵,B 为正整数时,表示矩阵AB 次乘积;B 为负整数时,表示矩阵 A 的逆的 B 次乘积
% ~=    不等于
% & 逻辑与 | 逻辑或 ~ 逻辑非

%% 字符串
% 合并字符串
F1 = 'My name is ';F2 = 'Clayton Shen';
F3 = strcat(F1,F2) %函数 strcat()在合并字符串的同时会把字符串结尾的空格删除
F4=[F1 F2] %保留字符串结尾的空格
% 用关系运算符比较两个字符串相同字符
str1='carnal';str2='casual';str3='apple'
F5=str1==str2
% strrep字符串替换 str = strrep(str1, str2, str3) 把 str1 中的 str2 子串替换成 str3
F6 = 'This is a good example.'
F7 = strrep(F6, 'good', 'great') 
% strfind(str, pattern) 查找 str 中 pattern 出现的位置
F8 = strfind(F6, 'a')

%% 矩阵的计算
% norm 求矩阵或者向量的范数
% normest 估计矩阵的 2 阶范数
% rank 矩阵的秩,矩阵 A 中线性无关的向量个数称为秩
% trace 矩阵的迹 ,即求对角元素的和
% orth 矩阵的正交空间
% rref 约化行阶梯形式
G1=[1 2 3;4 5 6;7 8 9;10 11 12]; %矩阵 A
G2=rref(G1) %正交矩阵 A 的约化行阶梯形式
G3=(rank(G1)==rank(G2)) %比较矩阵 A 与矩阵 R 的秩
G4=trace(G1) % trace 矩阵的迹 ,即求对角元素的和
G5=orth(G1) % orth 矩阵的正交空间
% 矩阵空间之间的夹角,该结果表明矩阵 A 和矩阵 B 的线性相关度很低。
G6=magic(4)
theta = subspace(G1,G6)

%% 线性方程组
% X=A\B 表示求矩阵方程 AX=B 的解;
% X=B/A 表示求矩阵方程 XA=B 的解。

%% 绘图
% -   实线     .:  点线     o   圆
% -.  点划线   +  加号    s  方形     x   x 符号
% --  虚线     *  星号    d  菱形     p  正五边形
% ^   上三角   <  左三角  >  右三角   v   下三角

% y   黄色     r  红色    g  绿色     b   蓝色
% m   紫红色   c  蓝绿色  w  白色     k   黑色 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值