Matlab 基础教程
教程目录
零碎知识
1.语句后面加上“;”不显示输出
2.ans代表最近一个输出结果
3.clc清除所有的命令行窗口中的命令
4.clear清除工作区中所有变量
5.doc 函数名
查找函数帮助文档
6.help 函数名
调用函数简易帮助
7.退出 MATLAB 后,工作区变量不会保留。使用 save 命令保存数据以供将来使用,save myfile.mat
通过保存,系统会使用 .mat
扩展名将工作区保存在当前工作文件夹中一个名为 MAT 文件的压缩文件中。
8.使用 load 将 MAT 文件中的数据还原到工作区。load myfile.mat
9.%
后面是注释
10.format
函数可以控制显示的数字格式,但是不会影响真实值
11....
为续行符
运算符
符号 | 角色 |
---|---|
== | 等于 |
~= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
&& | 逻辑与 |
|| | 逻辑或 |
~ | 逻辑非 |
算数运算符:
符号 | 角色 |
---|---|
* | 乘法 |
+ | 加法 |
- | 减法 |
/ | 除法 |
^ | 乘方 |
数据类型
数组
Matlab的数组和Python类似,都是多维数组,但常用的就是一维数组和二维数组,以下均是在一维和二维数组上讨论问题。
数组创建
1.直接创建
x=[1,2,3,4;3,4,5,6] %逗号行和行的元素进行分隔,分号是列与列元素分隔
2.函数生成
常用函数linspace()生成
zeros()
生成全为0的数组、eye()
生成对角阵、ones()
生成全为1的数组。
数组索引
Matlab多维数组中,第一个元素标号是1而不是0.
A = 4×5
16 2 3 13 0
5 11 10 8 0
9 7 6 12 0
4 14 15 1 17
A(4,5)=17
A(1:3,2)=[2,11,7]'
单独的冒号表示指定该维中的所有元素,与python索引不同的是,matlab切片操作两边都是闭区间,而python遵从左闭右开原则。matlab不能用负数作为索引值。
对超出数组区域复制会让数组直接扩容,并对没有赋值的地方补充上0。
数组运算
数组和标量运算是逐元素操作。
数组与数组之间的运算(+,-,*,/,\,^)均为矩阵运算,运算符前面加一个"."表示逐元素运算。
函数作用于数组,如果不是特定的对数组作用的函数,则默认是逐元素操作,如数学函数cos(),sin()。
数组操作
a’表示数组a转置
串联数组:用方括号将两个数组括起来就实现了数组的串联。
A=[a,b]表示横向拼接
A=[a,b]表示纵向拼接
删除数组中的元素,只需要另这一个位置的元素赋值为[ ]即可
数组生成
冒号矢量生成x=[start:step:end],包括start, 从start出发,一直增加step,直到小于等于end为止。
常用函数
函数 | 功能 |
---|---|
sum() | 求和 |
mean() | 平均值 |
det() | 行列式 |
prod() | 返回数组的连乘 |
mod() | 取余 |
readmatirx() | 从文件中读取数组 |
writematrix() | 保存数组 |
还有一些线性代数的常用函数,详见帮助文档。
复数
复数用i或j表示根号负一,6i,7j是合法的,可以省略*
常用函数
常用函数 | 功能 |
---|---|
conj() | 返回共轭复数 |
complex() | 创建复数 |
imag() | 返回虚部 |
real() | 返回实部 |
内置常量
列出几种常见的常量的功能
常量 | 功能 |
---|---|
inf | 正无穷大 |
pi | 圆周率 |
浮点数
浮点数不用多说了,声明的数值都是浮点数的形式。
字符串
单引号括起来就够了。
程序设计
M文件
M文件分为函数式M文件和脚本式M文件。
脚本式M文件是一个包含多行可以执行的MATLAB命令,相当于就是把多条MATLAB命令装入一个脚本文件一次性执行。
而函数式M文件第一行都是以function开始,说明该M文件是一个函数式脚本,M文件名必须和函数名相同。函数式M文件中的变量都是局部变量。
要创建M文件用edit
命令
例如:edit mysphere
创建一个名称为mysphere的M文件,将M文件保存后,在命令行中键入mysphere就可以运行,或者也可以在编辑器中按绿色的三角号运行。
关于函数式M文件的编写,看这篇文章在科学计算中就够用了。
https://blog.csdn.net/qq_25018077/article/details/88998126
实时脚本
实时脚本具有更强的交互性
用编辑器中的新建可以建立实时脚本,还可以选择把一些注释内容转化为纯文本格式,这样增强程序的可读性。
程序控制
循环结构
for循环
for 变量=一维数组
执行语句,执行语句……
end
例如:
for i=linspace(1,10,10)
z=z+i;
end
while循环
while 表达式
执行语句
end
表达式为真则继续执行执行语句,执行到假为止
选择结构
if rem(a, 2) == 0
disp('a is even')
b = a/2;
end
以上这个例子说明,if后面的判断条件为真,则执行if和end之间的语句。
if a < 30
disp('small')
elseif a < 80
disp('medium')
else
disp('large')
end
含有else和elseif如上,其意已现,注意每一个if对应一个end
接下来是switch的用法
switch dayString
case 'Monday'
disp('Start of the work week')
case 'Tuesday'
disp('Day 2')
case 'Wednesday'
disp('Day 3')
case 'Thursday'
disp('Day 4')
case 'Friday'
disp('Last day of the work week')
otherwise
disp('Weekend!')
end
注意每一个switch对应一个end
转向控制
break语句
break 跳出当前循环
continue语句
continue直接进入下一次循环
pause语句
pause表示暂停程序的运行,用户按Enter键之后继续
pause(n)表示暂停n秒之后继续