1.基础
命令行太长,可加上三个小数点:“…” 进行分割(续行符),如
s=1-1/2+1/3-1/4...
+1/5-1/6+1/7
数值数据默认双精度double
clear
命令,清除工作区的所有变量
class(变量)
得到变量类型
复型数据,虚数部分用i或j表示,如6+5i ,real函数求复数实部,imag函数求复数的虚部
以角度为单位的函数,在函数名后加“d”,如sin(pi/2)=sind(90)
abs(xx)
可求实数绝对值,复数的模,字符串的ascii码
rem(m,10)
求m/10的余数
isprime(n)
求n是否为素数,是返回1,否返回0
exp(pi/2)
为e的2/Π次方
整形转换
x=int8(129) //转有符号的int,最大127,即这里x=127
x=uint(129) //转无符号uint,即x=129
取整函数
round()函数按照四舍五入
ceil()向上取整
floor()向下取整
fix()取靠近0的整数
矩阵的建立
//no.1
A=[1,2,3;4,5,6;7,8,9] //第一行1,2,3,第二行4,5,6
冒号表达式
e1:e2:e3 //分别为初始值,步长(两两之间间隔的大小,如果省略步长,则步长为1),终止值
inspace(a,b,n)//分别对应第一个元素,最后一个元素,元素总数(省略时为100)
结构矩阵&单位矩阵
//结构矩阵 结构矩阵元素.成员名=表达式
a(1).x1=10; a(1).x2='liu'; a(1).x3=[11,21;34,78];
//单元矩阵,用大括号
b={10,'liu',[11,21;34,78]}
2.矩阵
引用矩阵元素
A(3,2)
表示A矩阵第三行,第二列元素
可用序号引用,如在A=[1,2,3;4,5,6;7,8,9]中,A(3)=7 (矩阵元素按列储存)
D=sub2ind(S,I,J)
,分别为行数和列数组成的向量,转换矩阵元素的行下标,转换矩阵元素的列下标,D为序号(下标转序号)
size(A)
求矩阵A的行列数
[I,J]=ind2sub(S,D)
,分别为行数和列数组成的向量,序号(序号转下标)
k=find(ch>='a'&ch<'z')
找到符合条件的元素的序号
利用冒号获得子矩阵
A(i,:) 第i行的所有元素
A(:,j) 第j列的所有元素
A(i:i+m,k:k+m) 第i~i+m行且在第k~k+m行的所有元素
end运算符:表示某一维末尾下标 如:A(end,:),是指A矩阵最后一行所有元素
利用空矩阵删除矩阵的元素
将想要的元素范围赋值空矩阵[]即可,如A(:,[2,4])=[],删除第二列,第四列元素
改变矩阵形状
reshape(A,m,n)
:在矩阵综援素不变的情况下,将A重新排列成m×n的二维矩阵
注意:并不改变元素个数及其储存顺序
A(:)
:将矩阵A每一列元素堆叠起来成为一个列向量
3.算术运算&字符串
须知:加减运算两矩阵必须同型,乘法运算要求A行数和B的列数相同
点运算:两矩阵进行点运算是指它们对应元素进行运算,要求两矩阵同型
逻辑运算符:&,|,~
字符串和数值之间的转换:数值(ASCII码)=abs(字符串) 字符串=char(ASCII码)
strncmp(s1,s2)
:用于比较字符串s1,s2是否相等
strncmp(s1,s2,n)
:用于比较字符串s1,s2前n个字符是否相等
strcmpi(s1,s2)
:忽略大小写
4.特殊矩阵
zeros函数:产生全零矩阵
ones函数:产生全1矩阵
eye函数:产生对角线为1的函数
rand函数:产生(0,1)区间均匀分布的随机矩阵
randn函数:产生均值为0,方差为1的标准正态分布随机矩阵
inv(矩阵):求其逆矩阵
zeros(m):产生m×m零矩阵
zeros(m,n):产生m×n零矩阵
特殊矩阵介绍:
魔方矩阵M=magic(8) (8行8列)
范德蒙矩阵vander(1:5)
希尔伯特矩阵:H=hilb(4)
伴随矩阵:A=compan(P)
帕斯卡矩阵:P=pascal(5)
对角阵
对角矩阵:对角线上元素非零
数量矩阵:对角线上元素相等
对角矩阵:对角线上元素为1
diag(A):提取矩阵A对角线元素,产生一个列向量
diag(A,k):提取矩阵A第k条对角线元素,产生一个列向量
构造对角矩阵:diag(V):以向量V为主对角线元素,产生对角矩阵
三角阵
triu(A)
:提取矩阵A的主对角线及以上的元素
tril(A)
:提取矩阵A的主对角线及以下的元素
triu(A,k)
:提取矩阵A的第k条主对角线及以上的元素
矩阵的转置
A=[1,3;3+4i,1-2i]
转置:A.’
共轭转置:A’
若矩阵为实数,转置和共轭转置是一样的
矩阵旋转:rot90(A,k),将矩阵A逆时针旋转90°的k倍,k为1可省略
矩阵左右翻转:fliplr(A)
矩阵上下翻转:flipud(A)
矩阵其他功能
把一个方阵看作一行列式,并对其按行列式的规则求值:det(A)
求矩阵的秩:rank(A)
求矩阵的迹,即对角线元素之和:trace(A)
求矩阵A全部特征值,构成向量E:E=eig(A)
或者 [X,D]=eig(A) A的全部特征值构成对角阵D,X的各列是对应的特征向量
5.subplot画图
subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是
将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,
也就是整个figure中有n个图是排成一行的,一共m行,
如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,
最后一个如果是1表示是从左到右第一个位置。 )
6.MatLab中关于程序的操作
建立函数,新建脚本,开头为: function C = 函数名( 参数A,参数B),并且通过C返回(当有多个形参时,可用逗号分隔,而C为输出形参表,多个输出形参需要用方括号[] 括起来)
数据的输入:A=input(‘请输入A的值:’);
数据的输出:disp(输出项)
程序暂停:pause(延迟数秒),如果省略参数,则一直暂停,除非用户按任意键就可以继续执行
x^(1/3)=power(x,1/3)
matlab中的switch case相对于C,java不需要break,且最后一个的default改成otherwise
匿名函数:简化了函数的过程:如f=@(x,y)x^2+y^2,f(3,4)进行调用,但是不适用于复杂函数
7.Plot函数
plot(x,y),x,y分别存储x,y坐标的数据
最简单的plot调用格式:plot(x),下标为横坐标,值为纵坐标
x,y为同型矩阵,则分别对应x,y坐标绘画出曲线图
多条曲线可以plot(x1,y1,x2,y2,x3,y3……)
x=linspace(0,2*pi,100) ,位置0到2pi的100个元素存于x
plot(x,y,选项)
选项有线性,颜色,数据点标记
线型:“ - ” 实线, “ : ”虚线, “ -. ”点画线, “ – ” 双画线
颜色:“ r ”红,“ g ”绿,“ b ”蓝。。。。。。
数据点标记:“ * ”星号,“ o ”圆圈,” s “方块。。。。
8.fplot函数
fplot(f,lim,选项),f是函数,lim是x的取值范围,用二元向量[xmin,xmax]表示,默认[-5,5],选项和plot相同
自变量无法间隔采样时使用fplot(函数变化趋势未知,或者在不同区间函数变化频率过大,如sin(x/1))
9.曲线拟合
polyfit()进行拟合,找一个函数去逼近数据,再根据找到的函数预测下一个点的值(如 人口预测问题)(它实际上是求得最小二乘法拟合的多项式系数)
p=ployfit(x,y,3)生成三次多项式函数,调用ployval(p,2020)进行计算(求2020年的人口)