1. MATLAB变量存储
注意保存时只需保存工作区变量和变量的值,无需保存执行的命令。
>> a = [1,2,3,4]
a =
1 2 3 4
>> b = [10,20,30,40]
b =
10 20 30 40
>> table = [a',b']
table =
1 10
2 20
3 30
4 40
>> save //默认保存到matlab.mat中
正在保存到: E:\MATLAB\PROJECT\matlab.mat
>> load('matlab.mat') //将保存的数据导入
>> save varname.mat //自定义保存的文件名
>> save mynewfile a b //将变量a,b保存至mynewfile.mat中
>> load('mynewfile.mat') //加载a,b变量
>> save varname3.dat a b -ascii
//以ascii格式保存,可以保存为dat或者txt格式,需要自己指定扩展名
>> save file_name.txt a b -ascii -double //高精度格式保存
2. 脚本M文件
1)用户可以在M文件中进行编码,并可以随时修改和重用,相当于C的源代码。
2)MATLAB的M文件可以利用窗口的缩进箭头运行,也可以使用
run myscirpt //使用执行命令加文件名的形式
run('myscript') //使用执行命令的函数形式
3)如果使用其他文本编辑器,则文件必须保存为ASCLL码格式,windows下的notepad即可。
4)文件名应当符合命名规则。
5)在命令窗口输入what命令可以查看当前路径下所有的M和MAT文件。
>> what
当前文件夹 E:\MATLAB\PROJECT 中的
MATLAB Code files
lbf_N
当前文件夹 E:\MATLAB\PROJECT 中的
MAT-files
matlab mynewfile varname varname2
6)MATLAB使用%作为注释的标志。
3.MATLAB基本内置函数
>> x = 9;
>> b = sqrt(x) %标量的平方根还是标量
b =
3
>> x = [4,9,16];
>> b = sqrt(x) %矩阵的平方根是矩阵
b =
2 3 4
>> rem(10,3) %余项函数,求余数
ans =
1
>> d = [1,2,3;4,5,6];
>> f = size(d) % 输出矩阵的行数和列数
f =
2 3
4.MATLAB帮助功能
1)使用help命令
>> help
帮助主题:
matlabhdlcoder\matlabhdlcoder - (没有目录文件)
matlab\testframework - (没有目录文件)
matlabxl\matlabxl - MATLAB Builder EX
matlab\demos - Examples.
matlab\graph2d - Two dimensional graphs.
matlab\graph3d - Three dimensional graphs.
matlab\graphics - Handle Graphics.
matlab\plottools - Graphical plot editing tools
matlab\scribe - Annotation and Plot Editing.
2)使用helpwin
命令可以打开一个HTML格式的帮助文件
3)使用help <topic>
可以指定某一个函数的帮助信息。如查看sin
函数的帮助信息
>> help sin
sin - Sine of argument in radians
This MATLAB function returns the sine of the elements of X.
Y = sin(X)
sin 的参考页
另请参阅 asin, asind, sind, sinh
名为 sin 的其他函数
fixedpoint/sin, symbolic/sin
4)输入doc sin
可以弹出sin函数的HTML帮助手册,推荐使用此方法
5.初等数学函数
初等数学函数包括对数函数,指数函数,绝对值函数,四舍五入函数和离散数学中的函数。
函数 | 用法 | 实例 |
---|---|---|
abs(x) | 求x的绝对值 | abs(-3) |
sqrt(x) | 求x的平方根 | sqrt(86) |
Nthroot(x,n) | 求X的N次方实数根,函数的输出结果不能是复数 | nthroor(-2,3) |
sign(x) | 符号函数,输出为1,0或者-1 | sign(-8) |
rem(x,y) | 求x/y的余数 | rem(25,4) |
exp(x) | 计算e^x | exp(10) |
log(x) | 计算ln(x),自然对数 | log(10) |
log10(x) | 计算lg(x),以10为底 | log10(10) |
注:
其中大部分函数的输入可以使标量,矢量,也可以是矩阵
MATLAB没有提供通用的对数运算函数,其他数值的函数需要通过对数运算间接求得。
>> fix(9/4) //取整函数,向下取整
ans =
2
6.离散数学
常用函数如下(感觉命名是初等数学为什么说的这么高大上)
>> factor(12) %对12进行因式分解
ans =
2 2 3
>> gcd(10,15) %求最大公约数
ans =
5
>> lcm(2,5) %求最小公倍数
ans =
10
>> rats(1.5) %用分数表示
ans =
3/2
>> factorial(8) %阶乘计算
ans =
40320
>> nchoosek(10,3) %计算10中选3的组合数
ans =
120
>> primes(10) %找到小于10 的素数
ans =
2 3 5 7
>> isprime(7) %检查x是否是素数
ans =
1
7.三角函数
绝大多数三角函数中的角变量用弧度表示
sin(x)
cos(x)
tan(x)
asin(x) % 即arcsin(x)
sinh(x) % 双曲正弦值
asinh(x) % 反双曲正弦值
sind(x) % x用角度表示,计算正弦值
asind(x) % 计算反正弦值
8.数据分析函数
1)最大值和最小值
max函数用于求最大值,当为矩阵时,它将保留每列的最大值
>> x = [1,2,3,4,5];
>> max(x)
ans =
5
>> x = [1,5,3;2,4,6];
>> max(x)
ans =
2 5 6
max函数可以用数组来保存最大值和最大值的位置
>> x = [1,5,3];
>> [a,b] = max(x)
a =
5
b =
2 %最大值的位置
>>
max(x,y)可以用两个矩阵中相同位置的最大值创建一个新的矩阵
>> x = [1,5,3;2,4,6];
>> y = [10,2,4;1,8,7];
>> max(x,y)
ans =
10 5 4
2 8 7
>>
min求最小值的使用方法与max基本相同。
2)平均值和中间值
求数组的平均值:
>> x = [1,5,3];
>> mean(x)
ans =
3
求矩阵的平均值,等价于求每列的平均值组成一个新的矩阵:
>> x = [1,5,3;2,4,6]
x =
1 5 3
2 4 6
>> mean(x)
ans =
1.5000 4.5000 4.5000
求矩阵的中位数,即求每一列的中间值:
>> x = [1,5,3;2,4,6;3,8,4]
x =
1 5 3
2 4 6
3 8 4
>> median(x)
ans =
2 5 4
求矩阵的众数,即求列表中出现最多的数字:
>> x = [1,2,3,3];
>> mode(x)
ans =
3
9.求和与乘积
1)cumsum
函数用于把数组中前面的数累加,产生一个求中间和的新数组,主要用于序列的计算。
>> k = 1:5;
>> sequence = 1./k;
>> format rat %用分数表示
>> sequence
sequence =
1 1/2 1/3 1/4 1/5
>> cumsum(sequence)
ans
1 3/2 11/6 25/12 137/60
2)sum
函数用于矩阵时,返回的是每列求和后生成的一个新的矩阵
>> x = [1,5,3;2,4,6]
x =
1 5 3
2 4 6
>> sum(x)
ans =
3 9 9
3)prod
用于求乘积,可用于数组或者矩阵
>> x = [1,2,3;2,3,4;3,4,5;5,6,7]
x =
1 2 3
2 3 4
3 4 5
5 6 7
>> prod(x)
ans =
30 144 420
4)cumprod可用于数组或矩阵,输出累积(累次乘积)
>> x = [1,5,3;2,4,6]
x =
1 5 3
2 4 6
>> cumprod(x)
ans =
1 5 3
2 20 18
10.排序
1)sort
用于数组或者矩阵,用于矩阵时按列进行升序排列:
>> x = [1,5,3];
>> sort(x)
ans =
1 3 5
>> x = [1,5,3;2,4,6];
>> sort(x)
ans =
1 4 3
2 5 6
使用sort(x,'descend')
可以实现降序排列。
2)sortrows(x,n)
代表以第n列为标注实线升序排列,不指定n默认为第一列,在n前面加 - 号即可以实现降序排序
(该函数的作用是可以保持列与列之间的对应关系不改变):
>> x = [3,1,3;1,9,3;4,3,6];
>> sortrows(x)
ans =
1 9 3
3 1 3
4 3 6
3)size
函数确定矩阵的行数和列数,length
函数可以输出矩阵的最大长度
>> x = [1,5,3;2,4,6]
x =
1 5 3
2 4 6
>> size(x)
ans =
2 3
>> length(x)
ans =
3
11.方差和标准差
回顾一下正态分布:正态分布函数成钟形,有68%的数据在一倍标准差,有95%的数据在两倍标准差之内,有99%的数据在三倍标准差之内。通常,标准差和方差对于庞大的数据集才有实际意义。
标准差使用std
求得,方差使用var
求得,需要强调标准差和方差仅限于分析大规模数据集
>> score1 = [90,91,90,89,94,83,88,92,98,99];
>> score2 = [69,61,73,79,81,88,84,93,99,61];
>> std(score1)
ans =
4.7188
>> std(score2)
ans =
12.8651
>> var(score1)
ans =
22.2667
>> var(score2)
ans =
165.5111
12.随机数
MATLAB可以生成两种不同的随机数,均匀随机数和高斯随机数(正态分布)
函数 | 用法 |
---|---|
rand(n) | 产生一个0到1直接的n*n的均匀随机数矩阵 |
rand(m,n) | 产生一个0到1直接的m*n的均匀随机数矩阵 |
randn(n) | 产生一个均值为0方差为1的n*n高斯随机数矩阵 |
randn(m,n) | 产生一个均值为0方差为1的m*n高斯随机数矩阵 |
example:
首先生成0-1之间的随机数,随后乘以5扩展为0-5之间,再加5扩展为5-10之间
>> r = rand(5,1)
r =
0.6557
0.0357
0.8491
0.9340
0.6787
>> r = r * 5
r =
3.2787
0.1786
4.2456
4.6700
3.3937
>> r = r + 5
r =
8.2787
5.1786
9.2456
9.6700
8.3937
example
创建一个均值为0方差为1的高斯随机数的3*3矩阵
>> randn(3)
ans =
1.0347 0.2939 -1.1471
0.7269 -0.7873 -1.0689
-0.3034 0.8884 -0.8095
example
创建一个数据集,由10个服从高斯随机分布的数据构成,数据集的均值是3,标准差是2.5
>> x = randn(2,5) * 2.5 + 3
x =
-4.3607 6.5960 3.8130 1.1127 6.4257
-1.2788 2.7444 2.3964 3.7980 3.7821
13.复数
输入复数是推荐使用complex函数
example:输入单个复数
>> A = complex(5,3)
A =
5.0000 + 3.0000i
用real和imag可以区分复数的实部和虚部:
>> real(A)
ans =
5
>> imag(A)
ans =
3
用isreal可以判断变量是否为实数,是实数则返回1,否则返回0
>> isreal(A)
ans =
0
用conj或者转置运算求共轭复数
>> conj(A)
ans =
5.0000 - 3.0000i
>> A'
ans =
5.0000 - 3.0000i
用复数的加法运算和乘法运算产生一个复数数组B
>> B = [A,A+1,A*3]
B =
5.0000 + 3.0000i 6.0000 + 3.0000i 15.0000 + 9.0000i
example: 生成复数数组
>> x = 1:3;
>> y = [-1,5,12];
>> complex(x,y)
ans =
1.0000 - 1.0000i 2.0000 + 5.0000i 3.0000 +12.0000i
复数通常用直角坐标上的点来描述,横坐标代表实部,纵坐标代表虚部。MATLAB提供将复数从直角坐标转换为极坐标的函数。
用绝对值函数对复数进行运算可以得到复数的模,等价于利用勾股定理计算半径
>> abs(A)
ans =
5.8310
利用angle可以计算复数的角度,计算结果用弧度表示
>> angle(A)
ans =
0.5404
当操作的是一个复数数组时,如下:
>> B
B =
5.0000 + 3.0000i 6.0000 + 3.0000i 15.0000 + 9.0000i
>> abs(B)
ans =
5.8310 6.7082 17.4929
>> angle(B)
ans =
0.5404 0.4636 0.5404
14.计算的极限
计算机程序所能处理的数据是有限的。
>> realmax %最大浮点数
ans =
1.7977e+308
>> realmin %最小浮点数
ans =
2.2251e-308
>> intmax %最大整数
ans =
2147483647
>> intmin %最小整数
ans =
-2147483648
如果超出上述范围可能会发生溢出。
上溢:计算结果超出了计算机的处理范围
下溢:计算结果太小,程序认定为0
应该避免出现上溢或者下溢
15.特殊值
>> pi % 常数
ans =
3.1416
>> i % 虚数
ans =
0.0000 + 1.0000i
>> j % 虚数
ans =
0.0000 + 1.0000i
>> Inf % 无穷大,数据溢出或者除数为0时的输出
ans =
Inf
>> NaN % 非数,当计算没有被定义时发生
ans =
NaN
>> clock % 当前时间
ans =
1.0e+03 *
2.0150 0.0050 0.0150 0.0160 0.0180 0.0119
>> fix(clock) % 当前时间,增加可读性,【年,月,日,时,分,秒】
ans =
2015 5 15 16 18 38
>> date % 时间,返回的日期采用字符串格式
ans =
15-May-2015