Matlab操作矩阵的相关方法

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 = https://www.it610.com/article/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#就会拿到单位矩阵

四、数据绘制 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; #一个灰度分布图


【Matlab操作矩阵的相关方法】转载于:https://www.cnblogs.com/leijing0607/p/9683486.html

    推荐阅读