MATLAB特殊矩阵及矩阵处理

%% 特殊矩阵

A = zeros(2,3)
B = ones(size(reshape(A,3,2)))  %用reshape函数及将A矩阵转化为3x2的矩阵

% 首先产生5阶两位随机整数矩阵A,再产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B,最后验证(A+B)I=IA+BI(I为单位矩阵)。
A = fix(10+(99-10+1)*rand(5))  % rand(5)产生一个5x5的随机矩阵,随机数在0-1之间
B = 0.6+sqrt(0.1)*randn(5)  % randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。
C = eye(5)  % 产生5阶单位矩阵
(A+B)*C == C*A+B*C

% 魔方矩阵
M = magic(3)

% 范德蒙矩阵(vander(V)生成以向量V为基础的范德蒙矩阵)
V = vander(1:5) % 生成以向量5为基础的范德蒙矩阵

% 希尔伯特矩阵
H = hilb(5)  % 希尔伯特矩阵元素为H(i,j) = 1/(i+j-1)

% 伴随矩阵
% 生成多项式x^3-2x^2-5x+6的伴随矩阵
p = [1,-2,-5,6]
C = compan(p)   % 第一行为-(-2)/1,-(-5)/1,-6/1,剩下的行由单位矩阵组成

% 帕斯卡矩阵
% 将杨辉三角形的元素放入矩阵中。矩阵的左上角几位n阶帕斯卡矩阵所对应的杨辉三角形
format rat  % 设置有理数输出格式
P = pascal(7)  % P(i,j) = P(i,j-1)+P(i-1,j)
inv(P) % 逆矩阵的元素也全为整数


%% 矩阵变换
% 对角阵:只有对角线上有非零元素的矩阵
% 数量矩阵:对角线上元素相等的对角矩阵
% diag(A):提取矩阵A主对角线元素,产生一个列向量。
% diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量。
% diag(V):以向量V为主对角线元素,产生对角矩阵。
% diag(V,k):以向量V为第k条对角线元素,产生对角矩阵。
% 建立一个5x5矩阵A,然后将A的第一行元素乘以1,第二行元素乘以2……第五行元素乘以五
A = [7,1,5,0,6;2,4,9,3,5;1,6,7,1,4;6,3,0,4,6;9,8,3,1,2];
D = diag(1:5)  % 产生对角线为1到5的对角线矩阵
D*A  % 对角线矩阵左乘一个矩阵就相当于将矩阵每行的元素乘以对角矩阵相应行的元素
A*D  % 对角线矩阵右乘一个矩阵就相当于将矩阵每列的元素乘以对角矩阵相应列的元素

% 三角矩阵
% 上三角阵:矩阵的对角线以下的元素全为零的矩阵。
% 下三角阵:对角线以上的元素全为零的矩阵。
% triu(A):提取矩阵A的主对角线及以上的元素。
% triu(A,k):提取矩阵A的第k条对角线及以上的元素。
% 提取矩阵的下三角矩阵的函数是tril用法跟triu一样
triu(ones(5),-1)
triu(ones(5))

% 矩阵的转制
% 转置运算符是小数点后面接单引号(.')。
% 共扼转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共扼。
A = [1,3;3+4i,1-2i]
A.'
A'

% 矩阵的旋转
% rot90(A,k):将矩阵A逆时针方向旋转90°的k倍,当k为1时可省略。
M = magic(3)
rot90(M)

% 矩阵的翻转
% fliplr(A):对矩阵A实施左右翻转。
% flipud(A):对矩阵A实施上下翻转。
% 验证魔方矩阵的主对角线和副对角线元素之和相等
A = magic(5)
D1 = diag(A)
B = flipud(A)  % 将矩阵上下反转使其主对角线换为副对角线
D2 = diag(B)
sum(D1)
sum(D2)

% 求逆矩阵
M = magic(5)
inv(M)  %求M的逆矩阵
% 运用逆矩阵的方法求解线性方程组x+2y+3z=5;x+4y+9z=-2;x+8y+27z=6
A = [1,2,3;1,4,9;1,8,27];
B = [5;-2;6];
answer = inv(A)*B
% 在线性方程组Ax=b两边各左乘A^(-1),有A^(-1)Ax=A^(-1)B,由于A^(-1)A=单位矩阵,故得x=A^(-1)B


%% 矩阵求值
% 方阵的行列式
% det(A):求方阵A所对应行列式的值
format rat
A = [1,3,2;-3,2,1;4,1,2];
det(inv(A))
1/det(A)  % 矩阵逆矩阵的行列式等于矩阵行列式的倒数

% 矩阵线性无关的行数和列数称为矩阵的秩。
% rank(A):求矩阵A的秩
% 求3-20阶魔方阵的秩。
for n = 3:20
    r(n) = rank(magic(n))
end
bar(r)
grid on
axis([2,21,0,20])  % 横轴坐标为2到21,纵轴坐标为0到20
% 奇数阶魔方阵秩为n,即奇数阶魔方阵是满秩矩阵。
% 一重偶数阶魔方阵秩为n/2+2( n是2的倍数,但非4的倍数)。
% 双重偶数阶魔方阵秩均为3(阶数是4的倍数)。

% 矩阵的迹,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数)
A = [1,3,2;-3,2,1;4,1,2];
b = trace(A)
t = sum(diag(A))

% 向量和矩阵的范数
% norm(V)或norm(V,2):计算向量V的2范数。(向量元素平方和的平方根)
% norm(V,1):计算向量V的1范数。(向量元素的绝对值之和)
% norm(V,inf):计算向量V的无穷范数。(所有向量元素绝对值中的最大值)
% norm(V)或norm(V,2):计算矩阵的2范数。(A'A矩阵最大特征值的平方根)
% norm(V,1):计算矩阵的1范数。(矩阵列元素绝对值之和的最大值)
% norm(V,inf):计算矩阵的无穷范数。(所有矩阵行元素绝对值之和的最大值)
A = [1,3,2;-3,2,1;4,1,2];
x = norm(A)
n = norm(A,1)
y = norm(A,inf)

% 矩阵的条件数(矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。)
% cond(A,1):计算A的1—范数下的条件数。
% cond(A)或cond(A,2):计算A的2—范数下的条件数。
% cond(A,inf):计算A的o—范数下的条件数。
% 求2-10阶希尔伯特矩阵的条件数
for n = 2:10
    c(n) = cond(hilb(n));
end
format long
c'

%% 矩阵的特征值和特征向量
% E=eig(A)∶求矩阵A的全部特征值,构成向量E。
% [X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。
A = [7,1,5;1,6,7;9,8,3];
B = eig(A)
[X,D] = eig(A)
[Y,E] = eig(A, 'nobalance')
A*X
D(1)*X(:,1)
% A乘以特征向量等于特征值乘以对应列的特征向量

% eigshow是平面线性变换的演示。
% eigshow(A),A为2X2矩阵, 分别显示不同的单位向量 X 及经变换后的向量 AX。用鼠标拖动x旋转,可以使x产生一个单位圆,并显示Ax所产生的轨迹。
A = [3.8,0.6;0.6,2.2];
[X,D] = eig(A);
x = X(:,1);
eigshow(A)

% 已知大写字母M的各个结点坐标如表所示。
% (1)绘制M的图形
% (2)设A = [1,0.5;0,1],用A对M的节点坐标进行变换,并绘制变换后的图形
x=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];  % 第一行代表恒坐标,第二行代表纵坐标
A = [1,0.5;0,1];
y = A*x;
subplot(2,2,1);
fill(x(1,:),x(2,:),'r');
subplot(2,2,2);
fill(y(1,:),y(2,:),'r');

%% 稀疏矩阵(0元素比非零元素多)
% 稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号。
% A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。
% S=full(A):将矩阵A转化为完全存储方式的矩阵S。
% sparse(m,n):生成一个m ×n的所有元素都是零的稀疏矩阵。
% sparse(u,v,S):其中u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。
A = sparse([1,2,2], [2,1,4], [4,5,-7])  % 第一行第二列元素为4以此类推

% spconvert(A) 直接建立稀疏矩阵
A = [2,2,1;2,1,-1;2,4,3]
B = spconvert(A)  % A矩阵相当于描述了一个稀疏矩阵,,非零元素有三个,即第2行第2列的1,第2行第1列的-1,第2行第4列的3

% 带状稀疏矩阵(所有非零元素集中在对角线上)
% [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d。
% A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原带状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。
A = [11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0.,0,52,0]
[B,d] = spdiags(A)
A = spdiags(B,d,5,6)

% speye(m,n)返回一个m x n的稀疏存储单位矩阵。

% 利用稀疏矩阵求方程的解
kf1=[1;1;2;1;0]; %主对角线下面一条对焦线上的元素
k0=[2;4;6;6;1]; %主对角线上元素
k1=[0;3;1;4;2];
B=[kf1,k0,k1]; 
d=[-1;0;1];   %对角线的相对位置,-1代表主对角线下面一条对角线
A=spdiags(B,d,5,5);
f=[0;3;2;1;5];
x = A\f

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值