前言
专栏系列文章,想学习的朋友可以先看看前面的文章。
矩阵的创建
矩阵的创建有多种方法,最简单的可以通过在命令行窗口直接输入一个矩阵。这适合创建比较小的矩阵,把矩阵元素放进方括号中,每行的元素用逗号或者空格进行分割,每列使用分号进行分割。
此外还可以通过语句或函数来生成矩阵,例如函数eye()用于生成单位矩阵。
另外,还可以通过M文件来建立矩阵,或者从外部数据文件中导入矩阵,例如通过函数imread()读取图片,从而获得图像数据的二维矩阵。
这里我们看一个示例
clear all;
A=[1:4;5:8]
f1=A(2,3)
f2=A(2)
f3=A(4)
结果为:
在这里,大家应该会对f2和f3的结果表示疑惑,大家请记住:
在MATLAB中,矩阵是按列进行存储的,所以A的第二个元素就是“5”,即f2为“5”;A的第四个元素是“6”,即f3为“6”。
接下来我们再看下一个示例
clear all;
A=[1:4;5:8;9:12;13:16]
f1=A(1,:)
f2=A(:,3)
f3=A(1:2,1:2)
f4=A(1:end,end)
结果为:
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
f1 =
1 2 3 4
f2 =
3
7
11
15
f3 =
1 2
5 6
f4 =
4
8
12
16
f1表示的是矩阵第一行的信息,f2表示的是第三列的信息,f3获取一个两行两列的矩阵,f4表示获取矩阵的最后一列,end表示矩阵行或列的最后。
在MATLAB中,矩阵是通过列进行存储的,先第一列再第二列,直到结束。矩阵元素可以通过单下标来获取,也可以通过双下标进行获取,可以通过函数sub2ind()和ind2sub进行转换。
我们来看一下示例:
clear all;
A=[1:4;5:8;9:12;13:16]
ind1=sub2ind(size(A),3,4)
A(ind1)
A(3,4)
[I,J]=ind2sub(size(A),10)
ind2=sub2ind(size(A),I,J)
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
ind1 =
15
ans =
12
ans =
12
I =
2
J =
3
ind2 =
10
我们这里可以看出用size()来获取矩阵的大小(如果还有不太懂的,看看示例,我想很快也能明白的)
我们 再来看一个例子
clear all;
A=[1:4;5:8;9:12;13:16]
B=A>5
A(A>5)=5
f1=find(A>4)
A(find(A>4))=6
这里的B=A>5表示的应该是 新建一个矩阵B对应于A,大于5的在对应位置的值为1,小于或等于5的值为0。下面几行代码的意思我想应该也是很好理解的。
我们来看一下示例运行的结果:
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
B =
0 0 0 0
0 1 1 1
1 1 1 1
1 1 1 1
A =
1 2 3 4
5 5 5 5
5 5 5 5
5 5 5 5
f1 =
2
3
4
6
7
8
10
11
12
14
15
16
A =
1 2 3 4
6 6 6 6
6 6 6 6
6 6 6 6
应该还是非常好理解的,如果有困惑的地方可以去回顾温习我前面的文章,当然收藏下来也是非常不错的选择哦!
在程序中对矩阵的元素进行赋值,如果矩阵的行或列超出了矩阵的大小,则MATLAB自动扩充矩阵的大小,然后再进行赋值,扩充部分用零进行填充。
我们用一个示例来简单地看一下
clear all;
A=[1:4;5:8]
a=A(2,3)
A(4,4)=3
A(5,5)
可以看出在执行第四行代码时,MATLAB自动地对矩阵进行了扩充
而最后一行代码是想获取矩阵第五行第五列的值,而这超出了矩阵的范围所以会有报错。
总结
本文主要讲了矩阵的创建,后面我们将会讲解矩阵的一些基本操作,欢迎大家继续关注。
本文将于近期持续更新,欢迎大家交流指正吐槽!!
小白需要大佬们建议和指导!!