在校学习数学建模,整理的matlab相关笔记,按照学校授课时间顺序发布相关内容,做这个的初衷是为了方便自己学习,所以有些地方以教材为主,大家不要见怪。
希望能在这里分享学习的一些知识碎片,接触时间不长,如果文章有任何错误,欢迎大家指正。
如果喜欢我的文章还请大家不吝动手给我点赞收藏关注哦,留下你来过的足迹,让我眼熟你。
目录
复习上节知识,例题:计算函数在x = 1上的值
function f=fun(x)
f = exp(2*x)+sin(3*x)+5
>>x = 1,fun(x)
>>fun(1)
% 两种都可以,未加;时会输出两个12.5302
数组与矩阵
2.1 数组
2.1.1 数组的建立(创建)
4种方式建立简单数组
>>x = [1 2 3 4 5 6 7 18]
x = 1 2 3 4 5 6 7 18
>>y = 1:7
y = 1 2 3 4 5 6 7
>>z = 3:2:9
z = 3 5 7 9
% 3到5且间隔为2
>>v = [y z]
v = 1 2 3 4 5 6 7 3 5 7 9
>>u = linspace(2,9,11)
% 2和9之间的11个元素
2.1.2 数组元素的访问(位置)
1)访问一个元素 x(i)
>>x = [3 5 7 9]
x = 3 5 7 9
>>x(3)
ans = 7
2)访问一块元素 x(a:b:c)
>>x = [1 3 5 7 9]
x = 1 3 5 7 9
>>y = x(2:2:4)
y = 3 7
>>z = x(5:-2:1)
z = 9 5 1
3)直接使用元素编址序号 x([a b c d])
>>x = [1 3 5 7 9]
x = 1 3 5 7 9
>>x([2 4])
ans = 3 7
2.1.3 数组的方向
产生列向量有两种方法:直接产生和转置产生
>>c = [1;2;3;4]
c=1
2
3
4
>>b = c'
b = 1 2 3 4
2.1.4 数组的运算
1) 标量-数组运算
每个元素对该标量施加相应运算
>>a = [1 2 3 4]
a = 1 2 3 4
>>c = 2
c = 2
>>a1 = a + c
a1 = 3 4 5 6
>>a2 = a*c
a2 = 2 4 6 8
>>a3 = a./c
a3 = 0.5 1 1.5 2
% 上除下 输出未加小数位
>>a4 = a.\c
a4 = 2 1 0.06667 0.5
% 左除 后在上 同上
>>a5 = a.^c
a5 = 1 4 9 16
>>a6 = c.^a
a6 = 2 4 8 16
2) 数组-数组运算
两个数组有相同维数时,可按元素对元素方式进行运算,不同大小或维数的数组不能进行运算
可编写脚本M文件,运行命令,如下:
a = [2 2 2];
b = [3 3 3];
c1 = a+b
c2 = a.*b
c3 = a./b
c4 = a.\b
c5 = a.^b
运行结果如下:
c1 = 5 5 5
c2 = 6 6 6
c3 = 0.6667 0.6667 0.6667
c4 = 1.5000 1.5000 1.5000
c5 = 8 8 8
2.2 矩阵
2.2.1 矩阵的建立
逗号或空格用于区分不同的行,除了分号,按return或enter键也表示输入新行
输入矩阵时,严格要求所有行有相同的列
>>a = [1,2;3,4]
a = 1 2
3 4
特殊矩阵
- a=[ ] 空矩阵
- b=zeros(m,n) 零矩阵
- c=ones(m,n) 元素全为1的矩阵
- d=eye(m,n) 单位矩阵(和高代中有区别)
>>eye(2,3)
ans = 1 0 0
0 1 0
若在括号只输入一个数字,输出方阵
2.2.2 矩阵中元素的操作
- 矩阵a的第r行 a(r,:)
- 矩阵a的第r列 a(:,r)
- 依次提取每一列,将a拉伸为一个列向量 a(:)
- 取a的第i1~i2行,第j1~j2列,构成新矩阵 a(i1:i2,j1:j2)
- 以逆序提取矩阵a的第i1~i2行,构成新矩阵 a(i2:-1:i1,:)
- 以逆序提取矩阵a的第j1~j2列,构成新矩阵 a(:,j2:-1:j1)
- 删除a的第i1~i2行,构成新矩阵 a(i1:i2,:) = [ ]
- 删除a的第j1~j2列,构成新矩阵 a(:,j1:j2) = [ ]
- 将矩阵a和b拼接成新矩阵 [ a b ] 或 [ a ; b ]
>>a = [1 2;3 4]
a = 1 2
3 4
>>a(:)
ans = 1
2
3
4
2.2.3 矩阵的运算
1)标量-矩阵运算
2)矩阵-矩阵运算
线性代数中所定义矩阵运算命令如下
- 矩阵加法 a+b
- 矩阵乘法 a*b
- 方阵的行列式 det(a)
- 方阵的逆 inv(a)
- 方阵的特征值和特征向量 [v d] = eig(a)
1.3 MATLAB程序设计
非0数值为真,输出为1;零当作假,输出为0
1.3.1 关系和逻辑运算
1) 关系操作符
>>1<2
ans = 1
>>2<=3
ans = 1
>>2>3
ans = 0
>>4>=5
ans = 0
>>5 == 5
ans = 1
>>5~=5
ans = 0
2) 逻辑操作符
>> 1&0
ans = 0
>> 1|0
ans = 1
>>~0
ans = 1