草庐IT

Matlab — 常见矩阵生成及矩阵运算

unique_ZRF 2023-04-10 原文

常见矩阵生成及矩阵运算

一、 常用矩阵生成

1. 零矩阵

A=zeros(N) %生成 NXN 的全零矩阵
A=zeros(M,N) %生成 M×N的全零矩阵
A=zeros(M,N,P,) %生成 M×N×P 的全零矩阵
A=zeros(size(B)) %生成和矩阵 B 维数相同的全零矩阵

举例:

clc
clear all
A=zeros(5);%50矩阵
A1=zeros(3,4);%34列
A2=zeros(3,4,3)
B=[1,2,3,4;5,6,7,8;10,11,12,13]
A3=zeros(size(B));

2. 单位矩阵

A=eye(N) %生成 NXN 的单位矩阵
A=eye(M, N) %生成 M×N 的单位矩阵,对角元素为 1,其余元素为 0
A=eye(size(B)) %生成和矩阵 B 维数相同的单位矩阵

举例:

clc
clear all
C=eye(5); %单位阵
C1=eye(3,4);
C3=eye(size(B));

3. 全1矩阵

A=ones(N)	%生成 N×N 的全 1 矩阵
A=ones(M,N) %生成 M×N 的全 1 矩阵
A=ones(M,N,P,) %生成 M×N×P 的全 1 矩阵
A=ones(size(B)) %生成和矩阵 B 维数相同的全 1 矩阵

4. 幻方矩阵

M=magic(n) %生成 n 阶幻方矩阵,该矩阵由 1-n2之间任意整数构造而成且每行每列的和都相等
举例:

%幻方矩阵(一般可逆)
M=magic(3) %3x3的方阵,取值为1~n的平方,并进行排列,每一行、每一列的和相等

5. 随机整数排列

p=randperm(n) %生成正整数 12,…,n 的随机排列

举例:

clc
clear all
%随机整数排列(等步长)
p=randperm(10)  % 1~10的随机排列
p1=randperm(10)*0.1 % 0.1~1,步长为0.1的随机排列
p2=randperm(10-3+1)*10+20 %30100

6. 生成拓托普利兹矩阵

托普利兹矩阵简称 T 矩阵,其主对角线上元素相等,平行于主对角线的线上元素也相等。简单的 T 型矩阵包括前向位移矩阵和后向位移矩阵。

toeplitz(x,y) %生成一个以 x 为第一列,y 为第一行的托普利兹矩阵。

举例:

%托普里斯矩阵(对角线上元素相等)
c=[1 2 3 4 5]; %第一列的列向量
r=[1 3 5 7 9 10]; %第一行的行向量
b=toeplitz(c,r) %以c为第一列,r为第一行
b1=toeplitz(1:5) %生成方阵,第一列和第一行元素相同
%%若输入列的第一个元素与输入行的第一个元素不匹配。
         %在对角线冲突中,列具有更高优先级

7. 生成对角矩阵

A=diag(c) %生成由向量 c 中元素为对角线的对角矩阵
c=diag(A) %生成元素为矩阵 A 对角线元素的列向量
A=diag(c,k) %生成主对角线上第 k 条对角线元素为向量 c 的矩阵 A

举例:

e=diag(c); %以向量c为元素的对角阵
e1=diag(c,3); %3条对角线的元素为c
e2=diag(1:6,2); %2条对角线元素为1:6
e3=diag(1:7,1); %次对角线
e4=diag(1:8);
e5=e1+e2+e3+e4 %相加
e6=diag(1:7,-1) %1个对角线的元素为1:7

8. 生成0-1均匀分布矩阵

A=rand(N) %生成大小为 N×N 的 0-1 之间均匀分布的随机数组
A=rand(M,N) %生成大小为 M×N 的 0-1 之间均匀分布的随机数组
A=rand(M,N,P,) %生成大小为 M×N×P 的 0-1 之间均匀分布的随机数组
A=rand(size(B)) %生成和矩阵 B 维数相同的 0-1 之间均匀分布的随机矩阵

举例:

%均匀分布矩阵(取值范围为0~1之间)
f=rand(4) %4x4的均匀分布的矩阵
f1=rand(3,4)
f2=rand(size(f1)) %生成与f1大小相同的均匀分布矩阵
f3=rand(4)*10+10 %10~20

9. 生成正态分布矩阵

A=randn(N) %生成大小为 N×N 的随机矩阵,其元素服从均值为 0,方差为1 的标准正态分布
A=randn(M, N) %生成大小为 M×N 的随机矩阵,其元素服从均值为 0,方差为1 的标准正态分布
A=randn(M,N,P,) %生成大小为 M×N×P 的随机数组,其元素服从均值为 0,方差为 1 的标准正态分布
A=rand(size(B)) %生成和矩阵 B 维数相同的随机矩阵,其元素服从均值为 0,方差为 1 的标准正态分布

举例:

%正态分布矩阵(负无穷到正无穷)
%均值为0,方差为1
g=randn(4) %4阶矩阵
g1=randn(3,4)*6+5 %均值变为5,方差为6

二、矩阵运算

1. 行列式

d=det(A) %计算方阵 A 的行列式

举例:

clear all
A=[1 2; 3 4]
det(A)

2. 矩阵转置

A’ %将矩阵 A 转置,若含有复数,则为共轭转置
A.%将矩阵 A 转置,若含有复数,转置后复数不变
transpose(A) %与 A.’功能相同

3. 矩阵尺寸改变

Y=reshape(X, m, n) %将矩阵 X 转换为 m×n 的二维矩阵 Y

举例:

% %矩阵转置
l=[1,2,3,4;5,0,17,8;9,10,11,12];
j=[1,3,5,2;3,3,2,5;3,4,6,8]
l1=l' %转置
k=l+j*i
k1=k' %共轭转置
k2=k.'%只转置不取共轭
k3=transpose(k) %转置
m=reshape(l,2,6) %l变为2*6的矩阵(矩阵顺序不变(按列排))
m2=reshape(l,size(j)) %变为3*4

4. 矩阵求和

Y=sum(X) %矩阵 X 各列元素的和所组成的向量
Y=sum(X,2) %矩阵 X 各行元素的和所组成的向量
Y=cumsum(X) %矩阵各列元素的和所组成的矩阵,Y(k,j)=sum(1:k,j)
Y=cumsum(X,2) %矩阵各行元素的和所组成的矩阵,Y(k,j)=sum(k,1:j)

举例:

 l=[1,2,3,4;5,0,17,8;9,10,11,12];
%矩阵求和
Y=sum(l) %列求和
Y1=sum(l,2) %行求和
Y2=cumsum(l) %1行加到第2行,前两行加到第3行
Y3=cumsum(l,2)%1列加到第2列,第12列加到第3列,前3列加到第4

5. 矩阵求积

Y=prod(X) %矩阵 X 各列元素的积所组成的向量
Y=prod (X,2) %矩阵 X 各行元素的积所组成的向量
Y=cumprod(X) %矩阵各列元素的积所组成的矩阵,Y(k,j)=prod(1:k,j)
Y=cumprod(X,2) %矩阵各行元素的积所组成的矩阵,Y(k,j)=prod(k,1:j)

6. 矩阵元素查找

s=find(A) %查找矩阵 A 中的非零元素,返回这些元素的单下标
[m, n]=find(A) %查找矩阵 A 中的非零元素,返回这些元素的双下标

举例:

l=[1,2,3,4;5,0,17,8;9,10,11,12];
n=find(l) %矩阵l的所有非零的元素的位置(按列排)
n2=find(l>=10) %找l中大于等于10的元素的位置
[m8,n8]=find(l>=10) %找出大于等于10的元素的行号和列号
d8=l(m8,n8)
l(find(l>=10))=0 %把l中大于等于10的元素变为0

7. 矩阵的标准正交基、向量范数

B=orth(A) %矩阵B的列向量组成矩阵A的一组标准正交基,B’*B=eye(rank(A))
n=norm(X) %求向量/矩阵 X 的 2-范数(欧几里得范数)。
n=norm(X, 1) %求向量/矩阵 X 的 1-范数
n=norm(X, p) %求向量/矩阵 X 的 p-范数
n=norm(X, inf) %求向量/矩阵 X 的∞-范数

举例:

clc
clear all
%标准正交基
o=[1 0 4 6;0 -2 0 2;-1 -2 0 2]
q=orth(o') %列优先

%范数
O=o(1,:)%第一行
s=norm(O)%1范数
s1=norm(o,2)%2范数
s2=norm(o,inf) %无穷范数

8. 矩阵的迹、秩、特征值、特征向量、特征多项式

x=trace(A) %求矩阵 A 的迹
r=rank(A) %求矩阵 A 的秩

p=poly(A) %计算数值矩阵 A 的特征多项式 p
p=charpoly(A,v) %计算符号矩阵 A 的变量为 v 的特征多项式 p

e=eig(A) %求矩阵 A 的特征值
[C,D]=eig(A) %求矩阵 A 的特征向量和特征值

举例:

clc
clear all
%求迹//特征值
M=magic(5)
R=rank(M)%求秩
t=trace(M)%求迹
E=eig(M)%求特征值
[D,E]=eig(M) %特征向量和特征值

%特征多项式
P=poly(M) %求出来为系数
syms v
P=charpoly(M,v) %特征多项式表达式

有关Matlab — 常见矩阵生成及矩阵运算的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  3. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  4. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

    请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

  5. ruby-on-rails - Ruby on Rails - 为文本区域和图片生成列 - 2

    我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数

  6. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

  7. ruby-on-rails - 如何在 Rails 3 中创建自定义脚手架生成器? - 2

    有这些railscast。http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你就会知道如何创建样式表和脚手架生成器。http://railscasts.com/episodes/216-generators-in-rails-3通过这个,您可以了解如何添加一些文件来修改脚手架View。我想把两者结合起来。我想创建一个生成器,它也可以创建脚手架View。有点像RyanBates漂亮的生成器或web_app_themegem(https://github.com/pilu/web-app-theme)。我

  8. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  9. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  10. 旋转矩阵的几何意义 - 2

    点向量坐标矩阵的几何意义介绍旋转矩阵的几何含义之前,先介绍一下点向量坐标矩阵的几何含义点:在一维空间下就是一个标量,如同一条直线上,以任意某一个位置为0点,以一定的尺度间隔为1,2,3...,相反方向为-1,-2,-3...;如此就形成了一维坐标系,这时候任何一个点都可以用一个数值表示,如点p1=5,即即从原点出发沿着x轴正方向移动5个尺度;点p2=-3,负方向移动3个尺度;     在一维坐标系上过原点做垂直于一维坐标系的直线,则形成了二维坐标系,此时描述一个点需要两个数值来表示点p3=(3,2),即从原点出发沿着x轴正方向移动3个尺度,在此基础上沿着y轴正方向移动两个尺度的位置就是点p3。

随机推荐