• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab矩阵操作 - 薛向峰

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Matlab操作矩阵的相关方法

下面这篇文章主要是对吴恩达老师机器学习中matlab操作的一个整理和归纳

一、基本操作

1.生成矩阵(ones、zeros)

A = [1 2;3 4;5 6]             #生成3行4列的矩阵

B = [1 2 3]                      #B就是一个行向量

C = [1;2;3]                      #定义c为一个列向量

D = 1:0.1:2           #定义开始值为1,步长为0.1,结束值为2的一个行向量

E = 1:6                  #定义开始值为1,步长默认为1,结束值为6的行向量

 

ones(2,3)     #矩阵中所有元素都为1 定义一个2行3列的矩阵

zeros(2,3)   #矩阵中所有的元素都为0 定义一个2行3列的矩阵

 

2.生成随机矩阵(rand、randn)

rand(1,3)         #生成1行3列的随机矩阵

randn(2,3)      #生成高斯随机矩阵,高斯随机矩阵即为标准差或方差为1

 

3.生成单位矩阵(eye(n))

eye(n)        #生成n行n列的单位矩阵

 

4.帮助命令(help)

help 变量名     #可查看函数的API详解

 

二、移动数据

1.操作.txt文件(load)

1.1 加载.txt文件并且拆分文件的行和列的值

data = load(\'文件路径\')      #加载文件

 

获取多列的数据(获取多行的数据和多列类似,只需要修改第一个参数即可)

data(:,1)     #拿到所有行第一列的数据

data(:,1:2)   #拿到所有行第一列和第二列的数据

data(:,1:3)   #拿到所有行第一列、第二列和第三列的数据

data(:,[1,3])  #拿到所有行第一列和第三列的数据

 

将矩阵所有的数据扁平化为一列

data(:)

将矩阵所有的数据扁平化为一行

data(:)\'

 

1.2 将数据保存为.txt文件

v = data(:,1)     #拿到第一列的数据

save test.txt v -ascii   #将数据保存到test.txt文件中

 

2.矩阵的操作

2.1 获得矩阵的行数和列数(size())

size(A)     #返回一个1行2列的矩阵  分别是矩阵的行数和列数

size(A,1)    #返回矩阵的行数

size(A,2)    #返回矩阵的列数

 

2.2 拿到矩阵的最大维度(length())

length(A)     #获得矩阵的行数和列数中维度较大的一个

 

2.3 通过矩阵索引获取某一个值

A(m,n)      #索引到矩阵m行n列的位置

 

2.4 修改矩阵的某一行或者某一列

A(:,2) = [10;11;12]    #修改矩阵第二列的数据

 

2.5 在矩阵中添加一行新的数据

A = [A,[10;11;12]]      #向矩阵中添加一行新的数据

C=[A B] 

2.6 矩阵的结合

横向结合:

A = [1 2;3 4;5 6]

B = [11 12;13 14;15 16]

C = [A B]

 

纵向结合:

C= [A;B]

 

三、计算数据

1.A.*B(矩阵之间的乘积)

A .*B    # A中对应位置元素和B中对应位置元素的乘积

 

2.A.^2 (矩阵自身的平方)

A.^2    #矩阵A的平方(A矩阵中的每个元素都平方)

 

3.1./A(矩阵中每个元素的倒数)

1./A 矩阵A中每个元素分别求倒数

 

4.log(A) (对矩阵中每个元素求对数) ,exp(A)(对A中的每个元素以e的底数)

5.abs(A)(对矩阵中的每个元素求绝对值)

6.-A(对矩阵中的每个元素求相反数)

7.A+1(对矩阵中每个对应的元素+1)

8.A’(A的转置)

9.一些有用的函数

求矩阵中最大的一个值:

max(max(A))

或者

max(A(:))   首先扁平化A成为一个列向量,然后求最大值

max是默认求每列的最大值:

max(A)  #求矩阵A的最大值(如果A是矩阵,会拿到每一列的最大值)

max(A,[],1)  #拿到矩阵A中每一列的最大值

max(A,[],2)  #拿到矩阵A中每一行的最大值

 

[val, ind] = max(a)   #返回矩阵A中的最大值和索引

A<3 (对应元素的比较 如果小于3返回1,如果大于3返回0)

find(A<3)   #找到A中所有小于3的元素,并且返回他们的索引

 

A=magic(3)   #任意行、列、对角的元素相加的和等于相同的值

[r,c] = find(A>=7)   #拿到所有大于等于7的元素的所在行和列

 

sum(A)   #获得矩阵中所有元素的和

sum(A,1)  #获得矩阵中每一列相加的和

sum(A,2)  #获得矩阵中每一行相加的和

sum(sum(A))  #获得所有元素的值

 

prod(A)   #获得矩阵中所有元素的乘积

floor(A)   #对矩阵中所有元素向下取整

ceil(A)    #对矩阵中所有元素向上取整

 

10.逆矩阵

pinv(A)    #求A得逆矩阵

pinv(A)*A  #就会拿到单位矩阵

 

eye

单位矩阵 

conj

共轭矩阵 

zeros

全零矩阵 

companion

伴随矩阵 

ones

全1矩阵 

det

行列式的值 

rand

均匀分布随机阵 

norm

矩阵或向量范数 

genmarkov

生成随机Markov矩阵 

nnz

矩阵中非零元素的个数 

linspace

线性等分向量 

null

清空向量或矩阵中的某个元素 

logspace

对数等分向量 

orth

正交基 

logm

矩阵对数运算 

rank

矩阵秩 

cumprod

矩阵元素累计乘 

trace

矩阵迹 

cumsum

矩阵元素累计和 

cond

矩阵条件数 

toeplitz

Toeplitz矩阵 

inv

矩阵的逆 

disp

显示矩阵和文字内容 

rcond

逆矩阵条件数 

length

确定向量的长度 

lu

LU分解或高斯消元法 

size

确定矩阵的维数 

pinv

伪逆 

diag

创建对角矩阵或抽取对角向量 

qr

QR分解 

find

找出非零元素1的下标 

givens

Givens变换 

matrix

矩阵变维 

linsolve

求解线性方程 

rot90

矩阵逆时针旋转90度 

lyap

Lyapunov方程程 

sub2ind

全下标转换为单下标 

hess

Hessenberg矩阵 

tril

抽取下三角阵 

poly

特征多项式 

triu

抽取上三角阵 

schur

Schur分解 

expm

矩阵指数 

mean

平均值 

expm1

矩阵指数的Pade逼近 

median

中值 

expm2

用泰勒级数求矩阵指数 

prod

元素积 

expm3

通过特征值和特征向量求矩阵指数 

sort

由大到小排序 

funm

计算一般矩阵函数 

std

标准差 

logm

矩阵对数 

sum

元素和 

sqrtm

矩阵平方根 

trapz

梯形数值积分 

spec

矩阵特征值 

corr

求相关系数或方差 

gspec

矩阵束特征值 

sparse

稀疏矩阵 

bdiag

块矩阵,广义特征向量 

adj2sp

邻接矩阵转换为稀疏矩阵 

eigenmar-

正则化Markov特征 

full

稀疏矩阵转换为全矩阵 

kov

向量 

mtlb_sparse

将scilab稀疏矩阵转换为matlab稀疏矩阵格式 

pbig

特征空间投影 

sp2adj

将稀疏矩阵转换为邻接矩阵 

svd

奇异值分解 

speye

稀疏矩阵方式单位矩阵 

sva

奇异值分解近似 

sprand

稀疏矩阵方式随机矩阵 

cumprod

元素累计积 

spzeros

稀疏矩阵方式全零阵 

cumsum

元素累计和 

lufact

稀疏矩阵LU分解 

hist

统计频数直方图 

lusolve

稀疏矩阵方程求解 

max

最大值 

spchol

稀疏矩阵Cholesky分解

四、数据绘制

1.绘制正弦函数

t = [0:0.01:0.98];

y1 = sin(2*pi*4*t);

plot(t,y1);

 

2.绘制余弦函数

t = [0:0.01:0.98];

y2 = cos(2*pi*4*t);

plot(t,y2);

 

3.同时绘制正弦函数和余弦函数

t = [0:0.01:0.98];

y1 = sin(2*pi*4*t);

y2 = cos(2*pi*4*t);

plot(t,y1);

hold on;                     #hold on 的作用是在旧的图像上绘制新的图像            

plot(t,y2,\'r\')           

 

xlabel(\'times\');        #添加横轴的label

ylabel(\'values\');        #添加纵轴的label

legend(\'sin\',\'cos\')     #将图例添加到右上角

title(\'my plot\')         #给图像一个title

close;    #关闭图像

 

figure(1);plot(t,y1);

figure(2);plot(t,y2);   #给不同的图像命名

 

4.将图像分为一个1*2的格子

subplot(1,2,1)   #前两个参数的意思是分为1*2的格子,后面一个参数的意思是当前使用第一个格子

 

5.改变轴的刻度

axis([0.5 1 -1 1])  #(xmin xmax ymin ymax)

 

6.清除一副图像(clf)

7.可视化一个矩阵

A = magic(5)

imagesc(A);

imagesc(A), colorbar, colormap gray;    #一个灰度分布图


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi的Public,Private,Protected,Published作用域【转】发布时间:2022-07-18
下一篇:
Delphi中内存映射对于大文件的使用发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap