0%

MATLAB使用教程

MATLAB使用教程

1
2
3
4
5
6
7
8
9
10
11
12
13
变量名区分大小写

clc可以清屏幕(清楚所有命令)

clear all(清楚右侧工作区的所有变量)

变量名必须以字母开头,不能使用标点,可用数字和下划线,长度不要超过63位

laoba='chihanbao'

%% 两个百分号加一个空格可注释当前行(有横线)

% 一个百分号加一个空格可注释当前行(无横线)

MATLAB数据类型

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
28
29
30
31
32
33
数字

+

-

*

/

字符串(用单引号圈出来)

s='lanzhou'

str=''

计算ASCLL码

abs(s)

将ASCLL码转为字符串

char(97)

把数字转换为字符串

num2str(65)

计算字符串长度(把空格也算入内)

length(str)


矩阵

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
A=[1 2 3; 4 5 2;3 2 7;4 6 8]

矩阵的转置(将行列互换)

B=A'

竖着将矩阵拉长

C=A(:)

求A矩阵的逆

D=inv(A)

形成一个10行5列3维度的全为0矩阵

E=zeros(10,5,3)

生成一个m行n列的均匀分布的0-1的随机数矩阵

rand(m,n)

生成一个m行n列的均值为0,方差为1的随机数正态分布矩阵

randn(m,n)

生成0,iMin,iMax区间内的m行,n列均匀的整数随机数矩阵

randi(iMax)

randi(iMax,m,n)

r=randi([iMin,iMax],m,n)

给矩阵的不同维度指定随机子矩阵

E(:,:,1)= randi(92)

E(:,:,2)= randi(14,10,5)

E(:,:,3)= randi([1,9],10,5)

元胞数组

1
2
3
4
5
6
7
8
9
10
11
A=cell(1,6)

A{2}=eye(3)%

eye为生产一个3X3的对角线为1的矩阵,matlab索引从1开始,python从0开始

A{5}=magic(5)%

生成一个三阶幻方,每列每行及对角线的数之和都相等

B=A{5}

结构体

1
2
3
4
5
6
7
8
9
10
11
books=struct('name',{{'machine learning','data mining'}},'price',[30 40])

books.name% 属性

books.name(1)

小括号取出来的是cell(相当于铅笔盒)

books.name{1}

中括号取出来的是字符串

矩阵构造与四则运算

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
A=[1 2 3 4 5 6 7 8 9]

B=1:2:9

1至9,步长为2,输出为1,3,5,7,9

C=repeat(B,3,1)

竖着重复B矩阵3次,横着重读B矩阵1次

D=ones(2,4)

生成2行4列都为1的矩阵



C=A+B

D=A-B

E=A*B'

F=A. *B(A与B对应位置相乘)

G=A/b相当于G=A*B'

H=A'/B

矩阵的下标

1
2
3
4
5
6
7
8
9
10
11
12
13
A=magic(5)

B=A(2,3)

C=A(3,:)

D=A(:,4)

(所有语言中指相应位置取全部)

matlab find

[m,n] = find (A>20) % 找到所有大于20的索引值,即第m列,第n行

程序结构

循环结构

for

for 循环变量 =初值:步长:终值

执行语句1

执行语句2

执行语句3

end

步长为1时可省略

求1^2^+2^2^+3^2^+4^2^+5^2^的和

1
2
3
4
sum=0;
for n =1:5
sum =sum +n^2;
end

求1-5的西格玛阶乘的和

1
2
3
4
5
6
7
sum=0;
for i=1:5;
p=1;
for j=1:i
p=p*j;
sum=sum+p;
end

while

while 条件表达式
执行语句1
执行语句n
end

【例5-11】求1+2+3+4+5…+10的和。
程序设计为:

1
2
3
4
5
6
s=0;
n=1;
while n<=10 % 设置循环条件
s=s+n;
n=n+1;
end

【例5-12】设计一段程序,求1~100的奇数和。
程序设计为:

1
2
3
4
5
6
x=1;
sum=0;
while x<101
sum =sum+x;
x=x+2;
end

分支结构

if…end结构

if 条件表达式
语句体1

end

【例5-13】用if.…end结构编写一段程序,要求满足条件时系统显示“成立”。
在MATLAB的命令窗口中设计的程序为:

1
2
3
4
5
6
7
8
a=100;
b=20;
if a>b
"成立"
end
运行结果为:
ans=
成立

if..…else…end结构

这种分支结构的格式为:

if 表达式
语句体1

else
语句体2
end

1
2
3
4
5
6
7
8
9
10
11
a=100;
b=20;
if a>b
"成立"
else
"不成立"
end

运行结果为:
ans =
成立

switch…case…end结构

switch..…case…end结构是通过与某个表达式的值进行比较,根据比较的结果做不同的选择,以实现程序的分支功能,它的结构格式为:
switch 表达式(数值或字符串)

case 数值或字符串1

语句体1;
case数值或字符串2

语句体2;

otherwise
语句体n;

end

switch后面表达式的值为数值变量或字符变量,

通过这些值与case后面数值或字符串的值进行比较,

与哪一个case的值相同就执行哪一个case下面的语句体,

如果与所有case的值都不相同,则执行otherwise下面的语句体。

otherwise语句可以省略,如果省略otherwise,

所有case都不满足时跳出分支结构,另外switch必须与end配对使用。

二维平面绘图

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
x=0:0.01:2*pi; %x取值范围

y=sin(x); %函数

figure %建立一个幕布

plot(x,y)
title('y=sin(x)') %题目
xlabel('x') %X标签
ylabel('sin(x)') %Y标签
xlim([0 2*pi]) %使图靠近边缘1



颜色|字符|颜色|字符
红|r粉红|m
蓝|b|白w
黄|y|黑k



实现 - ——————————

虚线 -- --------------------------
冒号线 : .... .... .... .... ...
点画线 -. —— - —— - —— - ——



符号|点类型|示例|符号|点类型|示例
·|点|

^|上三角|
+|十字号|

v|下三角|
o|圆圈|

<|左三角|
*|星号|

|右三角|
x|叉号|

|P|五角星|
s|正方形|

|h|六角星|

d|菱形|

典例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
x=0:0.01:20; 

y1=200 * exp(-0.05 * x).* sin(x);

y2=0.8* exp(-0.5 * x).* sin(10*x);

figure
[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');

set(get(AX(1),'Ylabel'),'String','Slow Decay') %左坐标区标签

set(get(AX(2),'Ylabel'),'String','Fast Decay') %右坐标区标签
xlabel('Time (\musec)') %\mu 希腊文
title('Multiple Decay Rates')
set(H1,'LineStyle','--') %y1图像
set(H2,'LineStyle',':') %y2图像

三维立体绘图

1
2
3
4
5
6
7
8
9
10
11
12
13
t=0:pi/50:10*pi; 

plot3(sin(t),cos(t),t) %三个方程组
xlabel('sin(t)')

ylabel('cos(t)')
zlabel('t')
%hold on 在同一张幕布中绘制多条线
%cvhidfjh ioe
%hold off
grid on % 打开网格

axis square %变成正方形

图像的保存与退出

1
2
3
4
5
6
%(1)Edit-Copy Figure
%(2)Toolbar→Save
%(3)print'-depsc','-tiff','-r300','picturel')
%(4)File→Export Setup


文件,另存为

编辑,复制图窗

编辑,图窗属性

文件,导出设置,设置宽为200,应用于两栏分设置

image-20220403112553212

1
2
3
4
[x,y,z]=peaks(30);   %产生双峰函数

mesh(x,y,z)
grid

图形窗口的分割

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
x=linspace(0,2 * pi,60); %拿到数据

subplot(2,2,1) % 绘制子图,将图幅划分为2行X2列,1指的是左上部分
plot(x,sin(x)-1);

title(sin(x)-1);axis([0,2 * pi,-2,0])
subplot(2,1,2) % 绘制子图,将图幅划分为2行X1列,2指的是下部分
plot(x,cos(x)+1);

title('cos(x)+1');axis([0,2 * pi,0,2])
subplot(4,4,3) % 绘制子图,将图幅划分为4行X4列,3指的是第1行第3列
plot(x,tan(x));

title('tan(x)');axis([0,2 * pi,-40,40])
subplot(4,4,8) % 绘制子图,将图幅划分为4行X4列,3指的是第2行第4列
plot(x,cot(x));

title('cot(x)');axis([0,2 * pi,-35,35])
谢谢你们对我的支持!

欢迎关注我的其它发布渠道