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 = load('⽂件路径') #加载⽂件
获取多列的数据(获取多⾏的数据和多列类似,只需要修改第⼀个参数即可)
data(:,1) #拿到所有⾏第⼀列的数据
data(:,1:2) #拿到所有⾏第⼀列和第⼆列的数据
data(:,1:3) #拿到所有⾏第⼀列、第⼆列和第三列的数据
data(:,[1,3]) #拿到所有⾏第⼀列和第三列的数据
将矩阵所有的数据扁平化为⼀列
data(:)
将矩阵所有的数据扁平化为⼀⾏
data(:)'
1.2 将数据保存为.txt⽂件
v = data(:,1) #拿到第⼀列的数据
v -ascii #将数据保存到⽂件中
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; #⼀个灰度分布图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论