matlab interplaq,数学建模之MATLAB编程篇

本篇文章是我在准备2020年全国大学生数学建模竞赛所学习的笔记,篇幅较长,将其分为编程篇和算法篇。

前言

一、Matlab基础

1.1实数和复数

>> z = 5

z =

5

1

2

3

4

5

6

>>z=5

z=

5

1.2行向量和列向量

>> x=[1 2 3]

x =

1 2 3

>> x = [1;2;3]

x =

1

2

3

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

>>x=[123]

x=

123

>>x=[1;2;3]

x=

1

2

3

1.3矩阵

>> y=[1 2 3;4 5 6;7 8 9]

y =

1 2 3

4 5 6

7 8 9

1

2

3

4

5

6

7

8

>>y=[123;456;789]

y=

123

456

789

>> y = [0:10]

y =

0 1 2 3 4 5 6 7 8 9 10

>> y = [0:10]'

y =

0

1

2

3

4

5

6

7

8

9

10

>> x = [0:0.5:2] | >> x = linspace(0, 2, 5)

x =

0 0.5000 1.0000 1.5000 2.0000

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

>>y=[0:10]

y=

012345678910

>>y=[0:10]'

y=

0

1

2

3

4

5

6

7

8

9

10

>>x=[0:0.5:2]|>>x=linspace(0,2,5)

x=

00.50001.00001.50002.0000

>> x = zeros(2,3)

0 0 0

0 0 0

>> x = ones(2,3)

1 1 1

1 1 1

>> x = eye(2)

1 0

0 1

1

2

3

4

5

6

7

8

9

10

11

12

>>x=zeros(2,3)

000

000

>>x=ones(2,3)

111

111

>>x=eye(2)

10

01

1.4 固定变量

pi 3.1416

i 虚数

Inf 报错信息

1.5 矩阵运算和数组运算

矩阵的加、减、乘、除和乘方(加点)

比较和逻辑运算

% 有 == & | xor(异或)

>> a1 = [1,2,3,4,5,6,7,8,9,];

>> a2 = [1,4,3,8,5,6,7,2,9];

>> eq = (a1==a2)

eq =

1 0 1 0 1 1 1 0 1

1

2

3

4

5

6

7

8

9

10

%有==&|xor(异或)

>>a1=[1,2,3,4,5,6,7,8,9,];

>>a2=[1,4,3,8,5,6,7,2,9];

>>eq=(a1==a2)

eq=

101011101

>> Stu =[98 75 64 45 54 67 85 90 89 96 77];

>> A(Stu>90) = 'A'

A =

'A A'

>> A(Stu<90 & Stu>80) = 'B'

A =

'A B BA'

>> A(Stu<80 & Stu>60) = 'C'

A =

'ACC CB BAC'

>> A(Stu<60 & Stu>0) = 'D'

A =

'ACCDDCB BAC'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

>>Stu=[9875644554678590899677];

>>A(Stu>90)='A'

A=

'A        A'

>>A(Stu<90&Stu>80)='B'

A=

'A     B BA'

>>A(Stu<80&Stu>60)='C'

A=

'ACC  CB BAC'

>>A(Stu<60&Stu>0)='D'

A=

'ACCDDCB BAC'

数组操作函数

filpud() 上下旋转 | fliplr() 左右旋转 | rot90 旋转90°

sum()

max、min

常用的数学函数:sin , cos , tan , cot , asin , acos , atan , acot

abs( ) 取决绝对值

sqrt( )开根号

向上取整(aeil)、向下取整(floor)、向零靠取整(fix)、四舍五入(round)

1.6 基本语句

for …. end

if … else … end

while … end

switch … case … end

% 求 1-10 之间的和

x = 0;

for i = 1:10

if mod(i,2)

x=x+1;

end

end

1

2

3

4

5

6

7

8

%求1-10之间的和

x=0;

fori=1:10

ifmod(i,2)

x=x+1;

end

end

t = 0 : pi/180 : 4*pi;

x = 16*sin(t).^3;

y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);

plot(x-3,y,'-r', x+3,y,'-b');

xlabel('x');

ylabel('y');

axis([-20, 20, -20, 15]); %坐标的取值范围

title('Two Heart');

legend('U', 'I');

1

2

3

4

5

6

7

8

9

10

11

12

t=0:pi/180:4*pi;

x=16*sin(t).^3;

y=13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);

plot(x-3,y,'-r',x+3,y,'-b');

xlabel('x');

ylabel('y');

axis([-20,20,-20,15]);%坐标的取值范围

title('Two Heart');

legend('U','I');

1.7 三维曲面图:meshgrid函数

>> [x,y] = meshgrid(1:3, 1:2)

x =

1 2 3

1 2 3

y =

1 1 1

2 2 2

1

2

3

4

5

6

7

8

9

10

11

12

13

>>[x,y]=meshgrid(1:3,1:2)

x=

123

123

y=

111

222

4e314eb14a91482d5cd515560b2db911.png

[x,y] = meshgrid(-pi: 0.1 :pi);

z = sin(x).*cos(y);

mesh(x,y,z);

surf(x,y,z);

xlabel('x');

ylabel('y');

zlabel('z');

title('sin and cos')

1

2

3

4

5

6

7

8

9

10

[x,y]=meshgrid(-pi:0.1:pi);

z=sin(x).*cos(y);

mesh(x,y,z);

surf(x,y,z);

xlabel('x');

ylabel('y');

zlabel('z');

title('sin and cos')

1.8 M函数格式

关键词 function 定义

方便代码的复用

function area = rectarea(L, W)

% 计算面积

% 在这里注释

% 下面是返回值

area = L. * W

1

2

3

4

5

6

7

8

functionarea=rectarea(L,W)

%计算面积

%在这里注释

%下面是返回值

area=L.*W

二、Matlab进阶

2.1文件操作

2.1.1 文本数据的读取

fprintf()

fopen(‘文件名’,‘访问权限(r)’)

读取一行 fgetl()

记得使用fclose()关闭,

220328c7c8540b557adb644b22241207.png

2.1.2 关于Excel文件的操作

xlsread(’文件路径’,’表单名’,’单元格’)

xlswrite()

4f4de029805263c8f4401d6f2e6ef0ec.png

2.1.3 图片数据的读入

imread()

image() 显示

0427b965b03fbd48c258061cdfb16353.png

2.2 简单方程计算

定解方程组

\begin{cases} 2x+3y+1z=4\ 4x+2y+3z=17\ 7x+1y-1z=1\ \tag{1}\end{cases}

>> A = [2 3 1; 4 2 3; 7 1 -1];

>> B = [4 17 1]';

>> A\B

ans =

1.0000

-1.0000

5.0000

1

2

3

4

5

6

7

8

9

10

>>A=[231;423;71-1];

>>B=[4171]';

>>A\B

ans=

1.0000

-1.0000

5.0000

线性和非线性拟合

ployfit()默认拟合

fittype() 指定拟合公式

4c631a0f1eab667bbf6f77363c70c174.png

实例

4b5340ff74b201e61a2d817f3566175c.png

插值

interpl

线性回归

regress

2.3 微分方程

使用Runge-Kutta法求解微分方程

一阶微分方程求解

f6da5dd281b15ca2ea772164eaf59369.png

高阶微分方程求解

cb0537e452a20d47d579d1f864009e6e.png

1.3.1 传染病模型

d9285459e15ac597b48d8d5793469f85.png

其中,@odesir 是定义的一个函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值