MATLAB程序设计与应用-(第二版)
2016-03-18 01:21:32 6 举报
AI智能生成
《MATLAB程序设计与应用-(第二版)》是一本介绍MATLAB编程的实用教程。本书详细介绍了MATLAB的基本概念、语法规则和常用函数,并通过实例演示了如何利用MATLAB进行科学计算、数据处理、图像处理和信号处理等实际应用。此外,本书还介绍了MATLAB的图形用户界面设计、嵌入式系统开发和并行计算等方面的知识。全书内容通俗易懂,适合初学者阅读。
作者其他创作
大纲/内容
应用篇
第8章MATLAB图形用户界面设计
8.1菜单设计
菜单句柄=uimenu(上级句柄,属性名,属性值)
'Label'菜单名,&后用ALT+
'Accelerator'快捷键字母,用Ctrl+
'Callback'调用文件名或命令
'Checked'on/off(默认)选中指示
'Enable'on(默认)/off可用性
'Position'相对位置数
'Searator'on/off(默认)上方加分隔线
右键菜单句柄=uicontexmenu;
……
set=(对象,'UIContextMenu',右键菜单句柄)
8.2对话框设计
对象句柄=uimenu(图形窗口句柄,属性名,属性值)
'String'说明文字
'ForegroundColor'说明文字颜色,默认黑
'BackgroundColor',背景颜色,默认浅灰
'Callback'调用文件名或命令
'Position',[x,y w,h]位置大小
'Units'单位
'pixel'像素,默认值
'inches'英寸
'centimeters'厘米
'points'磅
'normalized'相对位置,左下角0~1坐标
'Style'类型
'Max',默认1
'Min',默认0
'push'按钮,默认值
'toggle'双位按钮
'radio'单选按钮
激活值为Max
非激活为Min
'check'复选框
'list'列表框
Max-Min>1多选
Max-Min<=1单选
'popup'弹出框
无Max Min
'edit'编辑框
Max-Min>1多行
Max-Min<=1单行
'text'静态文本
无Max Min
'slider'滑动条
'frame'边框
无Max Min
'Value'
字体
'FontAngle'倾斜
'normalized'默认
'italic'
'oblique'
'FontWeight'粗细
'normalized'默认
'light'
'demi'
'bold'
'FontName'
'FontSize'
'FontUnits'
'HorizontalAlignment'对齐
'left'
'cent'
'right'
8.3可视化图形用户界面设计
第9章MATLABNotebook的使用
第10章MATLABsimlllink仿真软件
第11章MATLAB外部程序接口技术
第12章MATLAB的应用
基础篇
第1章MATLAB系统环境
1.1MATLAB概貌
1.1.1MATLAB的发展
1.1.2MATLAB的主要功能
1.1.3MATLAB功能演示
1.2MATLAB环境的准备
1.2.1MATLAB的安装
1.2.2MATLAB的启动与退出
1.3MATLAB操作界面
1.3.1主窗口
1.3.2命令窗口
1.3.3工作空间窗口
1.3.4当前目录窗口和搜索路径
搜索过程
1变量
2内部函数
3当前目录下m文件
4其他搜索目录m文件
path(path,'c:\mydir')
1.3.5命令历史记录窗口
1.3.6Stalt菜单
1.4MATLAB帮助系统
1.4.1帮助命令
help
lookfor 包含(很卡,慎用,Ctrl+C暂停)
1.4.2帮助窗口
helpwin
doc
将代替helpdesk
1.4.3演示系统
习题一
第2章MATLAB数据及其运算
2.1MATLAB数据的特点
默认双精度,占用64位,即8个字节
2.2变量及其操作
2.2.1变量与赋值
1.变量命名
字母开头,后街字母、数字、下划线,最多63个字符
2.赋值语句
变量=表达式
表达式
赋值给预定义变量ans
;结尾不显示运算结果
%开头注释
3.预定义变量
ans计算结果的默认赋值变量
eps机器零阀值
pi圆周率π的近似值
i,j虚数单位
循环变量用ii等,不用i或j
Inf inf无穷大如1/0
NaN nan非数如0/0,Inf/Inf
nargin函数输入参数个数
nargout函数输出参数个数
realmax最大正实数
realmin最小正实数
lasterr存放最新的错误信息
lastwarn存放最新的警告信息
2.2.2变量的管理
who变量名清单
whos变量名大小 字节 类型
clear清除工作空间中的变量(预定义变量除外)
save 文件名 [文件名表] [-append]追加 [-ascii]以ASCII处理
load 文件名 [文件名表] [-ascii]以ASCII处理
拓展名.mat
2.2.3数据的输出格式
format 格式符
short
<1000小数后4位,不超过7位有效数字
>1000科学计数5位有效数字
long
15位有效数字
科学计数
short e
long e
自动科学计数
short g
long g
rat近似有理数
hex十六进制
+只显示正负(0为空格)
bank银行元角分
compact没有空行
loose有空行
2.3MATLAB矩阵的表示
2.3.1矩阵的建立
[]
,或空格换列
;或回车换行
2.3.2冒号表达式
起始值a:步长默认1:终止值b
linspace(起始值a,终止值b,元素数n默认100)
同a:(b-a)/(n-1):b
2.3.3矩阵的拆分
A(行号,列号)
下标Subscript
用:表示所有列/行(用向量提取特定元素集合)
end末下标
[行号,列号]=ind2sub(size(A),序号)
A(序号)
序号Index按列编号=(列号-1)*行数+行号
A(:)=reshape(A,m,1)将每一列堆叠起来
序号=sub2ind(size(A),行号,列号)
矩阵大小
[行数,列数]=size(A)
行数列数较大者=length(A)=max(size(A))
维数=ndims(A)
cat(维数dim,构造矩阵成员)
1时纵向合并
2时横向合并
3时(;;n)显示
[]空矩阵删除元素
reshape(A,行数,列数)重排矩阵(不改变存储(按列存储))
2.4MATLAB数据的运算
2.4.1算术运算
基本运算
矩阵运算
+
-
C=A*B
行列m×p=m×n*n×p
C对应=ΣA对应行横×B对应列竖
A\B=inv(A)*B
A/B=A*inv(B)
上指逆(非奇异)
标量a/b=b\a
点运算
.*
./
.\
.^
数学函数
三角函数
三角
反三角
双曲
反双曲
指数对数
sqrt()平方根
exp()自然指数
pow2()
log()自然对数ln
log10()常用对数
复数
angle()幅角
real()实部
imag()虚部
数论
abs()绝对值
rem(被除数,除数)与被除数同号的模
mod(被除数,除数)与除数同号的模
取整
ceil()上取整
floor()下取整
fix()向零(中)取整
round()四舍五入
sign()符号函数
gcd()最大公因子
lcm()最小公倍数
2.4.2关系运算
< <= == ~= >= >
2.4.3逻辑运算
矩阵& | ~
标量&& ||
关系与逻辑运算函数
逻辑
all()全非0,与
any()任非0,或
xor()全0或全非0,亦或
find()寻位
返量时不用函数更快
例A(A>b)
判断
exist()存在
isempty()空,比length()==0快
isglobal()全局
isinf()无穷
isnan()非数
isfinite()有限
issparse()稀疏矩阵
isstr()字符串
2.5字符串
当作行向量,各行字符数相等
abs() double()转ASCII数值矩阵
char(ASCII码矩阵)转换字符串
eval(MATLAB语句字符串)转换成语句执行
字符串内的'用''
[]括起来拼凑
字符串处理函数
转字符串
setstr()ASCII码转字符
mat2str()矩阵转字符串
num2str()数值转字符串
int2str()整数转字符串
str2num()字符串转数值
strcat()连接
strcmp()比较
2.6结构数据和单元数据
2.6.1结构数据
结构矩阵名.成员名=表达式
rmfield(结构矩阵名,'成员名')删除
结构函数
struct()建立或转换为结构矩阵
获取
fieldname()获取成员结构名
getfield()获取结构成员的内容
判断
isstruct()是结构为真
isfield()成员在结构中时为真
setfield()设定结构成员的内容
rmfield()删除结构成员
2.6.2单元数据
{单元数据}
单元数据名{单元数据下标}
c(x,y)=[]删除变行向量
c{x,y}=[]置空
单元函数
celldisp()显示单元矩阵内容
cellplot()显示单元矩阵的图形描述
deal()把输入分配给输出
iscell()是单元矩阵时为真
转换
num2cell
cell2struct
struct2cell
习题二
第3章MATLAB矩阵分析与处理
3.1特殊矩阵
3.1.1通用的特殊矩阵
(行列相同数)、(行数,列数)
zeros()全0矩阵
ones()全1矩阵
eye()单位矩阵:主对角线全1其余0的方阵I/E/U,AI=IA=A
rand()均匀随机矩阵0~1
randn()正态随机矩阵0~1
3.1.2用于专门学科的特殊矩阵
magic()魔方矩阵:每行每列及对角线和相等
vander([a;b;c;d]);范德蒙德(Vandermonde)矩阵
hilb()希尔伯特(Hilbert)矩阵:元素1/(i+j-1)
invhilb希尔伯特逆矩阵:因其条件数很差
toeplitz(向量A,向量B);特普利茨(Toeplitz)矩阵:主对角线平行相等
compan()伴随矩阵:首行对应多项式a_n-i / a_n 下面是单位矩阵
pascal()帕斯卡(Pascal)矩阵:(x+y)^n展开系数杨辉三角
3.2矩阵结构变换
3.2.1对角阵与三角阵
diag(A,k)提取第k条对角线(略为0)、构造对角矩阵
triu(A,k)上三角矩阵
tril(A,k)下三角矩阵
3.2.2矩阵的转置与旋转
'转置
rot90()逆时针左旋转
fliplr()左右翻转
flipud()上下翻转
3.3矩阵求逆与线性方程组求解
3.3.1矩阵的逆与伪逆
inv()逆:A·B=B·A=单位矩阵I,满秩方阵才有
pinv()伪逆:A·B·A=A与B·A·B=B
3.3.2用矩阵求逆方法求解线性方程组
inv(A)*b或A\b
3.4矩阵求值
3.4.1方阵的行列式值
det()行列式值
3.4.2矩阵的秩与迹
rank()秩
trace()迹:对角线之和
3.4.3向量和矩阵的范数
norm(V,k)范数(k=2默认,1,inf)
3.4.4矩阵的条件数
cond(A,k)条件数(k=2默认,1,inf)
3.5矩阵的特征值与特征向量
eig()特征值/向量
例3.9求特征值的方法解方程
p=[系数向量];
A=compan(p);%伴随矩阵
x1=eig(A)%求A的特征值
同roots(p)
根为伴随矩阵的特征值
3.6矩阵的超越函数
超越(矩阵)函数:在运算函数后+m对矩阵整体进行运算
funm(A,'fun');通用矩阵函数
习题三
第4章MATLAB程序设计
4.1M文件
4.1.1M文件的分类
命令文件(Script File)
开头一般会用clear清除工作空间
函数文件(Function File)
开头必须是函数声明
function [返回参数]=函数名与文件名相同(输入参数)
4.1.2M文件的建立与打开
4.2程序控制结构
4.2.1顺序结构
1.数据的输入
input('字符串','s');
2.数据的输出
disp('字符',A,'字符',A);不显示矩阵名,紧凑无空行
3.程序的暂停
pause(延迟秒数);
pause 暂停直到按任意键继续
Ctrl+C强行终止程序
4.2.2选择结构
if 条件
语句组 1
elseif
语句组 m
else
语句组
end
C语言是
else if(条件)语句组;
swith 表达式
case 表达式 m
语句组 m
otherwise
语句组
end
C语言是
case m:语句组m;
default:语句组;
try
语句组 1
catch
语句组 2
end
4.2.3循环结构
for 循环变量(列赋值)=矩阵表达式
循环体语句
end
实际常用向量代替
while 条件
循环体语句
end
do while方法
while 1
循环体语句
if 条件
break
end
end
break结束循环
continue进入下一循环
4.3函数文件
4.3.1函数文件的基本结构
function [输出形参表]=函数名(输入形参表)
% 大写函数名 帮助用简要描述
%
% 作者、修改日期、版本信息
函数体语句
文件名(优先)与函数名相同
return结束函数运行并返回(通常可不用)
4.3.2函数调用
[输出形参表]=函数名(输入形参表)
4.3.3函数参数的可调性
nargin输入实参个数
nargout输出实参个数
4.3.4全局变量与局部变量
global 全局变量名
用到的地方都要在前面定义
4.4程序调试
第5章MATLAB绘图
5.1二维图形
5.1.1绘制二维曲线的基本函数
plot(实)下标为横坐标
plot(复)实横虚纵
plot(横坐标1,纵坐标1,可略选项1,x2,y2,O2,…)
plotyy(X1,左Y1,X2,右Y2,'function1','function2')
3.含选项的plot函数
'-'
'--'
':'
'-.'
'none'
'y' [1 1 0] 'yellow'
'm' [1 0 1] 'magenta'
'c' [0 1 1] 'cyan'
'r' [1 0 0] 'red'
'g' [0 1 0] 'green'
'b' [0 0 1] 'blue'
'w' [1 1 1] 'white'
'k' [0 0 0] 'black
'o'
'+'
'*'
'.'
'x'
's' □
'd' ◇
'^' △
'v' ▽
'>' ▷
'<' ◁
'p' ☆
'h' ✡
'none'
5.1.2绘制图形的辅助操作
1.图形标注
title('图形名称')
xlabel('x轴说明')
ylabel('y轴说明')
text(x,y,'在该位置的说明')
legend('图1说明','图2说明')
2.坐标控制
axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax cmin cmax])
v = axis
axis auto
axis manual
axis tight
axis fill
axis ij
axis xy
axis equal等刻度
axis image
axis square正方形
axis vis3d
axis normal
axis off
axis on
axis(axes_handles,...)
[mode,visibility,direction] = axis('state')
3.图形保持
hold on
hold off
4.图形窗口的分割
subplot(行数,列数,第几个绘图区)
5.1.3绘制二维图形的其他函数
直角
bar()条形图
stairs()阶梯图
stem()杆图
fill()填充图
极坐标
polar(theta,rho)
对数
semilogx()
semilogy()
loglog()
自适应采样
fplot('函数表达式或文件',xy取值范围,允许误差默认2e-3,选项)
其他
pie([向量])饼图
compass([复向量])向量图
5.2三维图形
plot3()
meshgrid(x,y)网格坐标
mesh(x,y,z,颜色范围c默认z)三维网格图
meshc()带等高线
meshz()带底座
surf(x,y,z,c)三维曲面图
surfc()带等高线
surfl()带光照
sphere(n默认20)三维球面
cylinder(半径向量R,n默认20)柱面
peaks()多峰函数
其他三维图
bar3()条形图
stairs3()阶梯图
stem3()杆图
fill3()填充图
waterfall()瀑布图
contour()二维等高线图
contour3()三维等高线图
5.3三维图形的精细处理
view(方位角az默认-37.5°,仰角el默认30°)
分支主题
5.4隐函数绘图
ezplot(f可多个参数方程,[a默认-2*pi,b默认2*pi])
ezplot3()
ezpolar()
ezcontour()
ezcontourf()
ezmesh()
ezmeshc()
ezsurf()
ezsurfc()
5.5低层绘图操作
5.5.1图形对象及其句柄
1.图形对象
计算机屏幕(必有)
图形窗口(必有)
Figure
坐标轴
Axes
曲线
Line
曲面
Surface
文字
Text
图像
Image
光源
Light
区域块
Patch
方框
Rectangle
用户菜单
Uimenu
用户控件
Uicontrol
2.图形对象句柄
gcf获取当前图形窗口句柄
gca获取当前坐标轴的句柄
gco获取最近被选中的图形对象的句柄
findobj按照指定的属性来获取图形对象的句柄
5.5.2图形对象属性
属性的操作
set(句柄,属性名n,属性值n)设置属性
get(句柄,属性名)获取属性
公共属性
''
''
''
''
''
''
''
''
''
''
5.5.3图形对象的创建
1.图形窗口对象
图形框口对象创建关闭
figure创建默认属性窗口
句柄变量=figure
句柄变量=figure(属性名n,属性值n)
figure(窗口句柄或整数)显示(或创建)并设定为当前窗口
close(窗口句柄)关闭窗口
close all关闭所有窗口
clf清除当前窗口内容
图形窗口对象特有属性
2.坐标轴对象
5.6光照和材质处理
5.7图像显示与动画制作
5.7.1图像显示
5.7.2动画制作
1.影片动画制作
getframe截取每一幅画面信息
moviein(n)建立用于保存n幅画面的数据矩阵
movie(m,n默认1)播放由矩阵m所定义的画面n次
第6章MATLAB数值计算
6.1数据处理与多项式计算
6.1.1数据统计与分析
(A,dim)
各列(,1)/()
各行(,2)
多个矩阵同位
[各列最大,行号]=max();
[各列最小,行号]=min();
mean()算数平均
median()中值
sum()和
prod()积
cumsum()累加和
cumprod()累乘积
std(A,0,dim)样本标准差/n-1
std(A,1,dim)总体标准差/n
[升排序,原位置]=sort(A,dim,'ascend');
[降排序,原位置]=sort(A,dim,'descend');
corrcoef()同大小相关系数
6.1.2数据插值
interp1(X,Y,插值点,method)
interp2(X,Y,Z,X1,Y1,method)
'linear'默认线性
'nearest'最近
'cubic'三次多项式
'spline'三次样条
spline(X,Y,X1)三次样条插值
6.1.3曲线拟合
[m次多项式系数长m+1,误差向量]=polyfit(X,Y,m)最小二乘法曲线拟合
6.1.4多项式计算
conv(P1,P2)多项式系数乘
[商式Q,余式r]=deconv(P1,P2)多项式系数除
互逆→ P1=conv(P2,Q)+r
p=polyder(P)多项式P的导函数
p=polyder(P,Q)求P·Q的导函数
[分子p,分母q]=polyder(P,Q)求P/Q的导函数
polyval(P,x)代数多项式求值(点乘除)
polyvalm(P,x)矩阵多项式求值
roots()求根
poly(x)以x为根的多项式系数
6.2数值微积分
diff(A,n阶,dim)向前差分
quad('函数文件名',下限,上限,精度默认10^-6,0不展现过程)
以后的版本将用integral替代quad和quadl且不支持inline
g=inline('');
quadl(内联函数g,下限,上限,精度默认10^-6,0不展现过程)
以后将用@(变量)函数 代替inline函数
例6.20 用两种不同的方法求:
int(e^-x^2,0,1)
先建立一个函数文件ex.m:
function ex=ex(x)
ex=exp(-x.^2);
然后在MATLAB命令窗口,输入命令:
format long
I=quad('ex',0,1) %注意函数名应加字符引号
I=quadl('ex',0,1)
trapz(X,Y)样本点组积分
dblquad(f,a,b,c,d,tol,trace)双重积分
6.3离散傅里叶变换
fft(X,长度N或[],dim)快速离散傅里叶变换
N=64;
t=linspace(0,5,N);
x=exp(-t);
X=fft(x);
F=X(1:N/2+1);
f=1/(t(2)-t(1))*(0:N/2)/N;
plot(f,abs(F),'-*')
fft、ifft、fft2、ifft2、fftn、ifftn
6.4线性方程求解
6.4.1直接解法
x=A^-1*b
x=A\b
[L,U,P]=lu(A);
x=U\(L\P*b)
上三角阵U
下三角阵L
置换矩阵P默认1
方阵A
PX=LU
[Q,R,E]=qr(A);
x=E*(R\(Q\b))
正交矩阵Q
上三角阵R
置换矩阵E略为1
方阵A
XE=QR
R=chol(A);
x=R\(R'\b)
上三角阵R
[R,p]=chol(A);
R对称正定时p=0;
A满秩矩阵时
R阶数为q=p-1
R'R=A(1:q,1:q)
6.4.2迭代解法
6.4.3求线性方程组的通解
分支主题
6.5非线性方程与最优化问题求解
6.5.1非线性方程数值求解
单变量
fzero('函数文件名',根搜索起点,相对精度,1显示迭代信息/默认0不显示)
最优化工具箱
fsolve('函数文件名',根搜索起点,选项20多个)
optimset显示与运用
optimset(选项,值)
option=optimset;option.LargeScale='off';
选项
'Display'中间结果显示
'off'不显示
'iter'每步都显示
‘final'只显示最终
'LargeScale'是否用大规模问题算法
'off'
'on'
'MaxIter'最大允许迭代次数默认400次
'TolFun'目标函数误差容限默认10^-6
'TolX'自变量误差容限默认10^-6
无约束最优化
有约束最优化
6.6常微分方程的数值求解
6.7稀疏矩阵
第7章MATLAB符号计算
7.1符号计算基础
7.1.1符号对象
符号量名=sym('符号字符串')
syms 用空格隔开的多个符号变量
表达式名=符号变量组成的符号表达式
'符号表达式'
表达式名=sym('不需定义变量的符号表达式')
7.1.2基本的符号运算
[分子,分母]=numden(s)
factor(s)分解因式
expand(s)展开
collect(s,合并同类项变量v)
simplify()函数规则化简
simple()多函数综合化简
sym(数值表达式)转符号表达式
eval(符号表达式)转数值表达式
findsym(表达式,查找第几个符号变量(略时全部))
7.2符号函数及其应用
limit(f,可先略x,略a=0,'right'/'left') 极限
diff(f,可略自变量v,可略n阶导数)
7.3符号积分
int(f,自变量,下限,上限)
傅里叶变换
fourier(f,x,t)
ifourier(f,t,x)
拉普拉斯变换
laplace(f,x,t)
ilaplace(f,t,x)
离散z变换
ztrans(fn,n,z)
iztrans(f,z,n)
7.4级数
symsum(级数通项,求和变量,首项,末项)
taylor(f,求泰勒级数变量,展开项数n默认6,展开位置a默认0)
taylor(f,求泰勒级数变量,展开位置a默认0,参数名,参数)
'Order'
项数默认6
'ExpansionPoint'
展开点默认0
'OrderMode'
7.5符号方程求解
solve(eq1,eq2…,eqn,v1,v2,…,vn)代数方程求解
fsolve方程数值求解
dsolve(eq1,eq2…,eqn,c1,c2,…,cn,'微分自变量')微分方程求解
Dny表示n阶导数
实验篇
实验要求
实验一MATLAB运算基础
实验二MATLAB矩阵分析与处理
实验三 选择结构程序设计
实验四 循环结构程序设计
实验五 函数文件
实验六 高层绘图操作
实验七 低层绘图操作
实验八 数据处理与多项式计算
实验九 数值微积分与方程数值求解
实验十 符号计算基础与符号微积分
实验十一 级数与方程符号求解
实验十二 菜单与对话框设计
实验十三Simulink的应用
实验十四 外部程序接口
实验十五 综合实验
参考文献
0 条评论
下一页