第 1 节Matlab 基本知识     
一、Matlab 的主要功能
Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。
数值和符号计算
矩阵(数组)的四则运算(Matrix+Laboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等
数字图像、数字信号处理
工程和科学绘图
控制系统设计
财务工程
建模、仿真功能
二、Matlab 的界面
1.命令窗口(Command Window):
Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;↑↓遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下:
Evaluate Selection :打开所选文本对应的表达式的值。
Open Selection :打开文本所对应的MatLab文件。
Cut :剪切编辑命令。
Paste :粘贴编辑命令。
2. M-文件编辑/调试(Editor/Debugger)窗口
Matlab Editor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。
M-文件(函数文件)
什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题,直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M-文件(Script File)。
创建M-文件的方法:
Matlab命令窗的File/New/M-file。
在Matlab命令窗口运行edit。
M-文件的扩展名: *.m
执行M-文件:F5
M文件的调试
  选择Debug菜单,其各项命令功能如下:
  Step :逐步执行程序。
Step in :进入子程序中逐步执行调试程序。
Step out :跳出子程序中逐步执行调试程序。
run:执行M-文件。
Go Until Cursor :执行到光标所在处。
Exit Debug Mode :跳出调试状态。
函数文件的创建要求:文件名与函数名必须相同,如sin(x)必有sin.m函数文件存在。
要求实参和形参位置一一对应。形参在工作空间中不会存在。
可以编写递归函数,可以嵌套其他函数。
可以用return命令返回,也可以执行到终点返回
3.工作空间(Workspace)窗口:
显示目前保存在内存中的Matlab的数学结构、字节数、变量名以及类型窗口。
保存变量:File菜单\Save Workspace as      命令行:save 文件名
装入变量:File菜单\Import  Data          命令行:Load 文件名
4.现在目录窗口(Current Directory)
5.命令历史窗口Command History ):提供先前使用过的函数,可以复制或者再次执行这些命令。
Matlab帮助系统
    Matlab在命令窗口提供了可以获得帮助的命令,用户可以很方便的获得帮助信息。例如:在窗口中输入“help fft”就可以获得函数“fft”的信息。常用的帮助信息有help ,demo ,doc ,who ,whos ,what ,which ,lookfor ,helpbrowser ,helpdesk ,exit ,web 等。
三、关于变量
变量命名规则:
变量名是不包含空格的单个词
变量名区分大小写
变量名必须以字母开头的字母、数字、下划线的组合,最多19个字符。
Matlab提供的标准函数名均以小写字母开头
特殊变量名:
ans  缺省变量名
pi  圆周率
i,j  虚数单位
eps  无穷小
inf ,Inf 无穷大   
realmax 最大正实数
realmin 最小正实数
清除变量的值
clear
clear 变量名1  变量名2
显示驻留内存的变量名
who
whos
第 2 节  Matlab编程
一、矩阵(数组)的输入
1、直接输入
直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;多维矩阵用多重方括弧。可建立复数矩阵
如: Null_M = [ ]          %生成一个空矩阵
可建立复数矩阵
R=[1,2,3;4,5,6]
I=[7,8,9;10,11,12]
Z=R+I*j
2. 由M文件方式建立,今后使用键入M文件名即可建立相应矩阵
2、利用函数输入
“:”表达式,产生等差行向量  start:step:end  或start:end(step=1)如:t=1:20
产生等距输入:    linspace(a,b,n) 将〔a,b〕区间分成n-1个等距小区间
产生随机排列:    randperm(n)    产生1~n之间整数的随机排列
3、特殊矩阵输入
zeros(n)          生成n×n全零阵,             
zeros(a,b)      元素全为0的a×b维矩阵,        以下各函数同理具有该类型。
zeros(size(A))      生成与矩阵A相同大小的全零阵,
ones(a,b)      元素全为1的a×b维矩阵
eye(a,b)        对角线上的元素为1的a×b维矩阵
rand(a,b)      产生a×b维均匀分布的随机矩阵,其元素在(0,1)内
rand              无变量输入时只产生一个随机数
randn(a,b)产生a×b维正态分布的随机矩阵
4.矩阵的转置和逆矩阵
X的转置:X    ( 图像顺时针旋转90°,并水平镜像)
如:a=imread('D:\2-1.bmp');
b=a';
subplot(1,2,1),subimage(a),subplot(1,2,2),subimage(b)
X的逆矩阵 inv(X)
二、矩阵元素的访问及其大小的确定
访问第n个元素:    X(n)(n>=1)
访问多个元素:      X ([n1,n2,n3……]) 或 X(1:10)
确定元素的个数:    numel(X)
确定矩阵的大小:    [m,n,l]=size(X)
三、矩阵的算数运算
数与矩阵的运算:m等价于m.
m+A  :  m与A中各元素相加
m-A  :  m与A中各元素相减
m×A  :  m与A中各元素相乘
m. /A  :  m除以A中各元素  (没有m/A)
m \ A  :  A中各元素除以m
矩阵与矩阵的运算
A+B:  A、B对应元素相加
A-B:  A、B对应元素相减
A×B:  A、B矩阵按线性代数中矩阵乘法运算进行相乘(注意维数匹配)
A.*B:  A、B对应元素相乘(注意维数相同)
A / B:  A除以B矩阵 ( A×B-1)(注意维数匹配)
A./B:  A除以B中各元素
A \ B:  B除以A矩阵 ( A-1×B)(注意维数匹配)
A.\B:  B除以A中各元素
A^m: 相当于矩阵A×矩阵A×矩阵A…….(m为小数即是矩阵的开方运算)(注意维数匹配)
A.^m:矩阵A中各元素的m次方
A.^B:矩阵A中各元素的进行B中对应元素次方(注意维数相同)
四、关系运算
<、<=、>、>=、= =、~ =  六种关系运算符。关系成立结果为1,否则为0。
五、逻辑运算
设矩阵A和B都是m×n矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:&|~xor(真为1,假为0)
(1)矩阵的与运算
格式  A&B或and(A, B)
说明  A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。
(2)或运算
格式  A|Bor(A, B)
说明  A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。
(3)非运算
格式  ~Anot (A)
说明  A的元素为0,则结果元素为1,否则为0。
(4)异或运算
格式  xor (A,B)
说明  A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。
六、集合运算
1.两个集合的交集  intersect
2.检测集合中的元素  ismember
3.两集合的差  setdiff
4.两个集合交集的非(异或)函数  setxor
5.两集合的并集  union
6.取集合的单值元素 unique
七、MatLab的控制流
由各种语句构成
语句后面加“;”号,不显示运算结果
%开头表示是注释语句
赋值语句
变量=表达式
表达式  (相当于将值付给ans变量)
演示(三)
for循环结构
【例】一个简单的for循环示例。
for i=1:10;                    %i依次取1,2,…10,.
x(i)=i;                    %对每个i值,重复执行由该指令构成的循环体,
end; 
x                                  %要求显示运行后数组x的值。  
x =
    1    2    3    4    5    6    7    8    9    10
while循环结构
【例】Fibonacci数组的元素满足Fibonacci 规则:;且。现要求计算出该数组中第一个大于10000的元素。
a(1)=1;a(2)=1;i=2;
while  a(i)<=10000
      a(i+1)=a(i-1)+a(i);    %当现有的元素仍小于10000时,求解下一个元素。
      i=i+1;
end;
i,a(i),
i =
    21     
matlab速成教程
ans =
  10946     
if-else-end分支结构
【例1】一个简单的分支结构。
cost=10;number=12;
if number>8
  sums=number*0.95*cost;
end,sums
sums =
  114.0000
【例2】用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。