数学建模与MATLAB-6

前言

专栏系列文章,想学习的朋友可以先看看前面的文章。

矩阵的创建

矩阵的创建有多种方法,最简单的可以通过在命令行窗口直接输入一个矩阵。这适合创建比较小的矩阵,把矩阵元素放进方括号中,每行的元素用逗号或者空格进行分割,每列使用分号进行分割。
此外还可以通过语句或函数来生成矩阵,例如函数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自动地对矩阵进行了扩充
而最后一行代码是想获取矩阵第五行第五列的值,而这超出了矩阵的范围所以会有报错。

总结

本文主要讲了矩阵的创建,后面我们将会讲解矩阵的一些基本操作,欢迎大家继续关注。
本文将于近期持续更新,欢迎大家交流指正吐槽!!
小白需要大佬们建议和指导!!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值