导图社区 MATLAB
MATLAB基础知识与基本操作。包括命令行的基本操作、MATLAB的数据类型、MATLAB绘图、MATLAB数据导入导出、MATLAB基本编程等。
编辑于2023-01-07 21:14:32 江苏省MATLAB
命令行的基本操作
创建矩阵的方法
直接输入法
矩阵元素必须用[]
逗号/空格分隔
逗号表示命令的分隔,如应用clear a b c而不是clear a,b,c
行与行之间用分号
MATLAB函数
空矩阵[]
rand随机矩阵
0~1之间
rand(5,3):5行3列
rand(3,3):3行3列
eye单位矩阵
zeros
ones
Linspace等差数列
Linspace(0,1,4):从0到1,产生4个数
从文件中获取或用程序产生
矩阵元素的访问
矩阵的修改
矩阵编辑器
指令
a(3,3)=0
find指令
find(a==12)返回单下标
[r,c]=find(a==12)返回双下标
MATLAB的数据类型
MATLAB基本数值类型
双精度类型double
默认类型
单精度类型single
整数类型int/uint
常量
ans
eps:浮点数相对精度
realmax,realmin:实数最大/最小值
pi:圆周率
i,j:复数单位
inf:正无穷大
NaN:非数
逻辑类型
逻辑数据类型函数
logical
True
False
逻辑运算
与、或、非
xor:逻辑异或
any:有非0,返回真
all:都非0,返回真
字符串
字符串元素索引
字符串的拼接
利用[],两侧不加单引号
逗号扩展字符串长度
分号扩展字符串为二维/多维
字符串和数值的转换
char
double
字符串操作函数
char函数:单引号加逗号换行
字符串转换函数
str2num:形式不变;double:逐个字符转换
num2str
sprintf:格式化输出数据到命令行窗口
input函数:默认双精度,加's'则为字符串
元胞数组
元胞数组的创建
花括号
方括号内加花括号
花括号:自动扩展尺寸
cell函数创建空元胞
元胞数组的基本操作
圆括号()访问元胞:得到元胞数组
花括号{}访问元胞:得到字符串
圆、花结合访问元胞内部成员:D=A{1,2}(2)
元胞数组的操作函数
celldisp:显示元胞数组的内容
cellplot:图形方式显示元胞数组
cell2mat:元胞数组转矩阵
结构
结构的创建
直接赋值法
Student.age=26
struct函数
Student=struct('name','Way','age',26)
Student=struct('name',{'Way'},'age',{26}):不显示具体内容
repmat函数:给结构制作副本
结构的基本操作
访问结构数组的元素
Student.name
Student.('name')
Student.score(1,:)
mean函数求平均值
mean(Student(1).score)
mean([Student.score])
MATLAB绘图
二维绘图
基本指令plot
plot绘图
plot(x)
plot(x,y)
plot(x1,y1,x2,y2)
plot(t,[y',y1',y2',y3'])
plot(x,y,'s')
plot(x1,y1,'s1',x2,y2,'s2',...)
subplot子图分割
subplot(m,n,p)
figure多窗口绘图
figure(n)
图形加注
text(x,y,s):指定位置加标注(需先说明坐标x,y,内容s)
title('正弦和余弦曲线'):图形标题
legend('正弦','余弦'):图例
xlabel('时间t'),ylabel('正弦、余弦'):坐标轴标注
grid on(off):网格线
axis
axis:返回坐标轴区间值
axis([xmin xmax ymin ymax])
axis equal:横纵等距
axis square:正方形
axis on(off):显示/关闭坐标
axis auto:返回默认值
fplot函数图
fplot(fun,lims)
fplot(fun,lims,'corline')
[x,y]=flpot(fun,lims):只返回绘图点的值
ezplot
ezplot(f):[-2*pi 2*pi]内绘制f(x)的函数图
ezplot(f,xmin,xmax)
ezplot(f,[xmin,xmax],figure(n)):指定绘图窗口
ezplot('x^2+y^2=1'):隐函数作图
基本二位绘图函数fill
填充颜色
x=[1 2 3 4 5];y=[4 1 5 1 4];fill(x,y,'r')
特殊二维绘图函数
stairs(x,y):绘制阶梯图
polar(t,y):极坐标图
stem(y):火柴杆图
bar(y):直方图
pie(x,y):饼图
scatter(x,y,50,z):离散点图
三维绘图
三维线图
plot3(x,y,z):长度相同的向量
plot3(X,Y,Z):维数相同的矩阵
plot3(x,y,z,s):带开关量
plot3(x,y,z,'k--','linewidth',2)
--:画虚线
三维饼图
pie3([4 3 6 8 9])
三维网线图
mesh(z):z为矩阵
mesh(x,y,z):坐标
[X,Y]=meshgrid(x,y):生成坐标
三维曲面图
surf(x,y,z)
surfc(x,y,z):带等高线
surfl(x,y,z):被光照射带阴影
[x,y,z]=cylinder(r,30):三维柱面绘图,半径r,柱面圆周30等分
[x,y,z]=sphere(30):生成单位球面坐标,30等分
图形修饰方法
图形颜色修饰
colormap(MAP):色图设定函数
hsv:饱和值色图
gray:线性灰度色图
hot:暖色色图
等
shading
faceted:网格修饰,缺省方式
flat:去掉黑色线条
interp:颜色整体改变
图形效果修饰
透视与消隐hidden on(off)
网线图
裁剪修饰p(30:40,20:30)=nan*p(30:40,20:30)
网线图
曲面图
视角修饰view(az,el),az方位角,el俯视角
其他修饰
水线修饰waterfall
等高线修饰
contour(peaks,10):绘制peaks函数的10条等高线
C=contourc(peaks,10):计算坐标
Clabel(C):给等高线加标注
contour3(peaks,20):三维
MATLAB数据导入导出
数据的保存与获取
保存
save:将工作空间中所有的变量存到matlab.mat文件中
save data:将工作空间中所有的变量存到data.mat文件中
save data a b:将工作空间中a和b变量存到data.mat文件中
save data -append a:在文件里再加变量a
获取
load
load data
load data a b
将Excel数据导入MATLAB
直接导入
xlsread函数导入
num=xlsread(filename)
将MATLAB数据写入Excel
xlswrite('filename.xls',a)
将txt文件数据导入MATLAB
直接导入
data
textdata
语句
fidin=fopen('test2.txt'):打开
fidout=fopen('mkmatlab.txt','w'):创建
tline=fgetl(fidin):从文件读行
fprintf(fidout,'%s\n\n',tline):写数据
fclose(fidout):关文件
MK=importdata('MKMATLAB.txt'):将文件导入工作环境
将MATLAB数据写入txt文件
dlmwrite('text3.txt',a)
dlmwrite('test3.txt', a,'roffset', 1, 'delimiter', ' '):a前面空1行,分隔符为空格
dlmwrite('test3.txt', a,'-append'):文件末端输出a
MATLAB数据文件
工作空间的变量可以用save保存成.mat文件
whos-file加上文件名查看所存变量
导入.mat文件中数据用load命令
MATLAB基本编程
M文件入门
分类
脚本式(Script)
将需要重复输入的所有命令按顺序放到一个扩展名为m的文本文件下
全局变量,带回到工作区间来
函数式(Function)
自带参数,有返回结果
第一行以function开始
以局部变量的形式存储在文件中
组成部分
函数定义行(仅限函数式)
H1行:概括性描述,使用help和lookfor都可调出
帮助文本:比H1行更详细,使用help时与H1一起显示
函数体
注释
函数文件
基本结构
function[输出形参表]=函数名(输入形参表)
注释说明部分
紧随函数文件引导行后的第一注释行
第一注释行及之后的连续注释行
与在线帮助文本相隔空一行的注释行
函数体语句
说明
函数名与函数文件名不同时,用函数文件名
return语句:执行到该句即结束函数的执行
调用:[输出实参表]=函数名(输入实参表)
命令文件
不以function开头
输入函数名即执行
数据文件
.mat
标准二进制格式保存,可将工作空间中有用的数据变量保存下来
用save和load完成生成和调用
数据的输入输出
input函数
A=input('A= ')
xm = input ('What''s your name?', 's')
disp函数
disp(输出项)
输出项:字符串/矩阵
不显示矩阵名,格式更紧密,不留无意义空行
程序控制
顺序结构
选择结构
分支结构
模块
循环结构
for循环
循环变量=初值:增量:终值
拓展:简便求和
3*sum(1:33)
sum(3:3:100)
while循环
人机交互命令
符号函数
syms
定义一个函数,用f直接调用
第三次课-syms.m
匿名函数
@
f=@(参数1,参数2,…) 函数表达式
第四次课-mfunction.m
高数运算
极限:limit(f1,x,1)
x->1
微分(求导):diff(F,x,n)
n:阶数
差分:diff([1 3 4 5 7])
针对矩阵操作,求相邻两项差值
泰勒公式:taylor(f,x,'order',8)
函数f,变量x,8阶
积分:int(f,x)
Matlab微积分计算-积分
化简:simplify(ans)
int(sin(x),x,0,pi/2):定积分
trapz(xx,yy)
梯形法积分,即取点-分割-作积-求和
可用于求算一些无法精确计算的积分
xx=0:0.1:1横坐标范围
yy=exp(-xx.^2)纵坐标函数
quad(fun,a,b,tol)数值积分
tol可控制精度,越小越精确
1e-8:10的-8次方
quad(@myfun,0,pi,1e-8)使用自定义的m函数
微分方程:dsolve('D2y+2*y+1-x','y(0)=1,Dy(0)=1','x')
D2y:y''
初始值指定了两个
变量指定为x
求和:symsum(1/k^2,k,1,Inf)
插值与数据拟合
插值对应的点其函数是完全准确的;而拟合为了保证整体效果,对应的点的函数不准确
一维插值:interp1
二维插值
网格型数据:z=interp2(x0,y0,z0,x,y,'linear')
一般分布(非网格):z=griddata(x0,y0,z0,x,y,'v4')
多项式拟合
p=[3 9 7 -5]%生成多项式的系数,3*x^3+9*x^2+...
y=polyval(p,x)%将上式转化为x为变量的多项式
p1=polyfit(x,y,3)%生成拟合多项式的系数