matlab复习
1 操作入门
-
常用操作
- cd 路径
- help:查看函数用法
- who/whos:查看变量信息
- which xx:函数xx的位置
- lookfor xx:搜索函数xx
- what:列举当前目录所有的matlab文件
- dir:显示当前目录内容
- mkd xx:新建文件下xx
- why:恶搞
- clc:清空命令行、clear:清空变量
- home:发送光标复位
- iskeyword:关键词,可检查某个字符串是否属于关键词
- shg:显示当前图窗
- 命名
- 第一个字符以英文字母开头,后面可包含_和数字
- 不能与关键字同名
-
数值计算
-
format 控制输出格式
- format long、format rat分数形式
-
sin弧度、sind角度、asin反函数
-
exp、log:ln、log10:lg、sqrt、eps很小的数
-
复数
- abs、conj:复共轭、real实部、imag虚部、complex(3,4) 3+4i
-
inf和nan
- inf±inf=nan、1/0=inf、exp(inf)=inf、1/inf=0、0/0=nan、inf/inf=nan、nan与啥操作就是nan
- isnan() 判断是否为nan
-
特殊矩阵
- zeros、ones、diag([12,65,123,65])、rand、eye单位阵、nan
- linspace(a,b,t):生成区间[a,b]中等长的t个数
-
解线性方程组 AX=b
- 其唯一解为X=b/A
- X=inv(A)*b
- X=A\b
-
舍入方法
- round四舍五入
- ceil向上取整
- floor向下取整
- fix向0取整
- rem(a,b):返回a除以b后的余数
-
范数
- 二范数:norm(A*x-b)
- 一范数:norm(A*x-b, 1)
-
数值与矩阵运算的区别
- 数值运算:./、.*
- 转置:.’
- 矩阵运算:/、*
- 复共轭:’
-
矩阵操作
-
假设size(B)为3, 7
-
交换第2、3行:B([1,3,2]😅
-
左右翻转:B(:, 7: -1 :1)、fliplr(B)
-
上下翻转:flipud(B)
-
size、length:length取最大维的长度
-
-
常用函数
- max(A)按列求最大、max(A,[],2)按行求最大
- mean(A)按列求均值、mean(A,2)按行求均值
- std(A)、std(A,[],2)按列求、按行求
- sum(A)、sum(A,2)按列求和、按行求和
- prod(A)按列累乘、prod(A,2)按行累乘
- cumsum(A)每列分别累加、cumsum(A,2)每行分别累加
- sort(A)按列升序排序、sort(A,2)按行升序排序、sort(A,‘descend’)按列降序排序、sort(A,2,‘descend’)
- 返回值为[B, I]
- B为排序结果矩阵、I为结果的索引矩阵
- 返回值为[B, I]
-
插值
-
interp1
-
x = 0:pi/4:2*pi; v = sin(x); xq = 0:pi/16:2*pi; figure vq1 = interp1(x,v,xq); plot(x,v,'o',xq,vq1,':.'); xlim([0 2*pi]); title('(Default) Linear Interpolation');
-
-
fill填充
-
t = (1/16:1/8:1)'*2*pi; x = cos(t); y = sin(t); fill(x,y,'r') axis square
-
-
-
-
数据类型
- 分类
- logical、string、char、table、cell、struct、numeric(int、uint、single、double)
- struct
- 直接创建
- Student.name=‘hp’
- Student.test=9
- Student(2).name=‘hpp’
- struct函数
- struct(‘name’,‘hp’,‘test’,9)
- 直接创建
- 句柄handle@
- t = @sin; t(num)
- tt = @(x) x^2; tt(num)
- ttt = @() sprintf(’%.3f’,rand); ttt()生成随机数
- fplot(@(x) sin(x), [1,5]) 绘制某函数的图像
- fzero(Fun, 初始值) 求函数零点
- fminbnd(Fun, 左边, 右边) 求极小值
- fplot3(@(t) sin(t), @(t) cos(t), @(t) t) 绘制三维曲线图
- fsurf(@(x,y) sin(x)+cos(y)) 绘制三维曲面图
- fimplicit3(@(x,y,z) x.^2 + y.^2 - z.^2) 绘制三维隐函数
- fcontour(@(x,y) sin(x) + cos(y)) 绘制函数的等高线
- 元胞数组:可包括数字、字符产、矩阵类型
- celldisp:逐个显示元素
- cellplot用图形显示cell
- readcell读入文件成cell形式
- C(1,1)取出的是cell,C{1,1}取出的是string/double
- 分类
-
编写脚本
- 逻辑语句
- if elseif else end
- for i=1:100 … end
- while pos~=100 and pos2==1 … end
- continue、break
- &与&&
- &先计算左右两个式子真假,然后再逻辑与
- &&先计算前面式子,若假则不计算下一式子的值,效率更高
- 逻辑语句
-
绘图
-
plot 基本绘图
-
stairs(Y) 阶梯状图
-
X = linspace(0,4*pi,40); Y = sin(X); figure stairs(X,Y)
-
-
errorbar(x,y,err) 误差图
-
x = 1:10:100; y = [20 30 45 40 60 65 80 75 95 90]; err = 8*ones(size(y)); errorbar(x,y,err)
-
-
area 区域图
-
x = [10 11 12]; Y = [21.6 25.4; 70.8 66.1; 58.0 43.6]; area(x,Y) xlabel('Dealership ID') ylabel('Sales') legend({'Model A','Model B'})
-
-
loglog双对数刻度图
-
semilogx/semilogy 半对数
-
hist直方图
-
bar柱状图
-
stem火柴头
-
polar极坐标
-
contour等高线
-
image图片
-
绘图格式
- xlabel、ylabel、title
- xlim([a,b])、ylim([c,d])、legend(‘a’,‘b’)
- axis、grid(grid on/off)、axis equal(等比例)
- text(’…’)
- gtext(’…’) 在图上生成文字…(鼠标点击)
- box(加上框)
-
可选参数
- LineStyle
- LineWidth
- EdgeColor
-
-
文件操作
- load导入数据
- save保存数据
-
字符串
-
拼接字符串
- [‘aa’,‘as’] -》‘aaas’
-
某些字符串函数
-
blanks(num):num个空格
-
upper():大写、lower():小写
-
字符串比较
- 区分大小写:strcmp(str1, str2)
- 不区分大小写:strcmpi(str1, str2)
似乎没法传入第三个参数吧?
-
寻找字符串:strfind(str, ‘a’),返回找出的若干个索引
-
num2str(str)、str2num(str)
- num2str(pi, ‘%.7f’)保留7个小数
- num2str(pi, ‘%.7g’)保留7个有效数字
-
去空格
- deblank(str):去掉末尾的空格
- strtrim(str):去掉前后的空格
-
ascii码
- char(65)【‘A’】
- double(‘A’)【‘65’】
-
-
格式化输出
- sprintf(’%f’, pi)
- %f:小数、%e:科学计数法、%g:有效数字
- sprintf(’%.5f\n | %.3g\n’, [pi,pi])
- sprintf(’%10.5g\n’, pi),其中10表示宽度
- sprintf(’%-10.5g\n’, pi),从右边数起宽度为10
- printf,是把格式字符串输出到标准输出(一般是屏幕,可以重定向)
- sprintf,是把格式字符串输出到指定字符串中,所以参数比printf多一个char*。那就是目标字符串地址。
- fprintf,是把格式字符串输出到指定文件设备中,所以参数笔printf多一个文件指针FILE*。
-
-
例题
- 设计算法计算
A
\sqrt{A}
A
- L0 = A; W0 = A/L0;
- L1=(L0+W0)/2; W1=A/L1;
- L2=(L1+W1)/2; W2=A/L2;
- …
- Ln=(Ln-1 + Wn-1)/2;
- 求两个函数的交点
- sign符号函数、diff、find
- 设计算法计算
A
\sqrt{A}
A
ppt问题:
1.MATLAB是来源于哪两个英文单词?
matrix&laboratory
2.是谁写的第一个版本的MATLAB?
Cleve Moler
3.他编写MATLAB的初衷是为了让学生方便使用两个软件包,这两个软件包叫什么名字?
eispack和linpack软件包
4.MATLAB R2018a,这里的R2018a表示什么意思?
12.15
clock
datenum(y,m,d)
weekday(datanum(y,m,d))【计算周几】
tic;…;toc
profile
set(gca, ‘XTickLabel’, {‘sun’, ‘moon’, ‘…’})
eomday【matlab中的lastday,月的最后一天】
datevec(now)
考试重点
- 拟合函数polyfit(X,Y,N),多项式拟合 | 反斜杠求解线性方程组
- 复数:real实部、imag虚部
- 0、inf、nan之间的关系
- 矩阵乘法AX=B:X=A\B、X=inv(A) * B
- 矩阵索引的不同方法(增删改)
- ind2sub、sub2ind(线性索引与下标之间的转换)
- find(isnan(A))->linear indexing
- 冒号在等号左右
- A(😃 = 1,A形状不变
- B = A(😃,B的形状为n * 1
- 函数
- function res = Func(A)
…
end
- function res = Func(A)
- diff、【eig计算矩阵A的特征值和特征向量】[E] = eig(A):E为全部特征值、求矩阵A的全部特征值,[V,D] = eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量
- 匿名函数@
- quad、fzero、fplot、fminbad
- arrayfun+匿名函数:arrayfun(@(x) sprinf(’%.5f’,x), rand(5,4))
- cell数据结构(有作业题例题)
- struct数据结构
- upper、lower
- fopen、fclose、fread、fprintf、fscanf
- save、load
- 绘图:surf、mesh、contour\bar
- 日期、时间
试卷:
- https://eduai.baidu.com/view/98230632f211f18583d049649b6648d7c1c708ce
- https://eduai.baidu.com/view/7371c6337ed184254b35eefdc8d376eeaeaa17f2