matlab function非常全地 matlab 函数

matlab  function非常全地 matlab 函数
matlab  function非常全地 matlab 函数

一、常用对象操作:除了一般windows窗口的常用功能键外。

1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。

2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。

3、功能键:

功能键快捷键说明

方向上键 Ctrl+P 返回前一行输入

方向下键 Ctrl+N 返回下一行输入

方向左键 Ctrl+B 光标向后移一个字符

方向右键 Ctrl+F 光标向前移一个字符

Ctrl+方向右键 Ctrl+R 光标向右移一个字符

Ctrl+方向左键 Ctrl+L 光标向左移一个字符

home Ctrl+A 光标移到行首

End Ctrl+E 光标移到行尾

Esc Ctrl+U 清除一行

Del Ctrl+D 清除光标所在的字符

Backspace Ctrl+H 删除光标前一个字符

Ctrl+K 删除到行尾

Ctrl+C 中断正在执行的命令

4、clc可以命令窗口显示的内容,但并不清除工作空间。

二、函数及运算

1、运算符:

+:加,-:减, *:乘, /:除, \:左除 ^:幂,‘:复数的共轭转置,():制定运算顺序。

2、常用函数表:

sin( ) 正弦(变量为弧度)

Cot( ) 余切(变量为弧度)

sind( ) 正弦(变量为度数)

Cotd( ) 余切(变量为度数)

asin( ) 反正弦(返回弧度)

acot( ) 反余切(返回弧度)

Asind( ) 反正弦(返回度数)

acotd( ) 反余切(返回度数)

cos( ) 余弦(变量为弧度)

exp( ) 指数

cosd( ) 余弦(变量为度数)

log( ) 对数

acos( ) 余正弦(返回弧度)

log10( ) 以10为底对数

acosd( ) 余正弦(返回度数)

sqrt( ) 开方

tan( ) 正切(变量为弧度)

realsqrt( ) 返回非负根

tand( ) 正切(变量为度数)

abs( ) 取绝对值

atan( ) 反正切(返回弧度)

angle( ) 返回复数的相位角

atand( ) 反正切(返回度数)

mod(x,y) 返回x/y的余数

sum( ) 向量元素求和

3、其余函数可以用help elfun和help specfun命令获得。

4、常用常数的值:

pi 3.1415926…….

realmin 最小浮点数,2^-1022

i 虚数单位

realmax 最大浮点数,(2-eps)2^1022

j 虚数单位

Inf 无限值

eps 浮点相对经度=2^-52

NaN 空值

三、数组和矩阵:

1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num 为需要的数组元素个数。

2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。

ones( ) 创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量

zeros() 创建一个所有元素都为0的矩阵

eye() 创建对角元素为1,其他元素为0的矩阵

diag() 根据向量创建对角矩阵,即以向量的元素为对角元素

magic() 创建魔方矩阵

rand() 创建随机矩阵,服从均匀分布

randn() 创建随机矩阵,服从正态分布

randperm() 创建随机行向量

horcat C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)

vercat C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)

repmat(M,v,h) 将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次

blkdiag(A,B)以A,和B为块创建块对角矩阵

length 返回矩阵最长维的的长度

ndims 返回维数

numel 返回矩阵元素个数

size 返回每一维的长度,[rows,cols]=size(A)

reshape 重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。

rot90 旋转矩阵90度,逆时针方向

fliplr 沿垂轴翻转矩阵

flipud 沿水平轴翻转矩阵

transpose 沿主对角线翻转矩阵

ctranspose 转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别

inv 矩阵的逆

det 矩阵的行列式值

trace 矩阵对角元素的和

norm 矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….

normest 估计矩阵的最大范数矢量

chol 矩阵的cholesky分解

cholinc 不完全cholesky分解

lu LU分解

luinc 不完全LU分解

qr 正交分解

kron(A,B) A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间

rank 求出矩阵的刺

pinv 求伪逆矩阵

A^p 对A进行操作

A.^P 对A中的每一个元素进行操作

四、数值计算

1、线性方程组求解

(1)AX=B的解可以用X=A\B求。XA=B的解可以用X= A/B求。如果A是m×n的矩阵,当m=n 时可以找到唯一解,mn,超定系统,至少找到一组解。如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解

(2)AX=b, A=L×U,[L,U]=lu(A), X=U\(L\b),即用LU分解求解。

(3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A), X=Q\(U\b)

(4)cholesky分解类似。

2、特征值

D=eig(A)返回A的所有特征值组成的矩阵。[V,D]=eig(A),还返回特征向量矩阵。

3、A=U×S×UT,[U,S]=schur(A).其中S的对角线元素为A的特征值。

4、多项式Matlab里面的多项式是以向量来表示的,其具体操作函数如下:

conv 多项式的乘法

deconv 多项式的除法,【a,b】=deconv(s),返回商和余数

poly 求多项式的系数(由已知根求多项式的系数)

polyeig 求多项式的特征值

Polyfit(x,y,n)多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。polyder 求多项式的一阶导数,polyder(a,b)返回ab的导数

[a,b]=polyder(a,b)返回a/b的导数。

polyint 多项式的积分

polyval 求多项式的值

polyvalm 以矩阵为变量求多项式的值

residue 部分分式展开式

roots 求多项式的根(返回所有根组成的向量)

注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。

5、插值常用的插值函数如下:

griddata 数据网格化合曲面拟合

Griddata3 三维数据网格化合超曲面拟合

interp1 一维插值(yi=interp1(x,y,xi,’

method’)Method=nearest/linear/spline/pchip/cubic

Interp2 二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear

Interp3 三维插值

interpft 用快速傅立叶变换进行一维插值,help fft。

mkpp 使用分段多项式

spline 三次样条插值

pchip 分段hermit插值

6、函数最值的求解

fminbnd(‘f’,x1,x2,optiset(,))求f在 x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显示最后结果。fminsearch 求多元函数的最小值。fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。

五、图像绘制:

1、基本绘图函数

plot 绘制二维线性图形和两个坐标轴

plot3 绘制三维线性图形和两个坐标轴

fplot 在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)

loglog 绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx 绘制半对数坐标图形semilogy 绘制半对数坐标图形

2、线型:颜色线型

y 黄色 . 圆点线 v 向下箭头

g 绿色 -. 组合 > 向右箭头

b 蓝色 + 点为加号形 < 向左箭头

m 红紫色 o 空心圆形 p 五角星形

c 蓝紫色 * 星号 h 六角星形

w 白色 . 实心小点 hold on 添加图形

r 红色 x 叉号形状 grid on 添加网格

k 黑色 s 方形 - 实线

d 菱形 -- 虚线 ^ 向上箭头

3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。

=================================================================

附录1.1 管理用命令

函数名功能描述函数名功能描述

addpath 增加一条搜索路径 rmpath 删除一条搜索路径

demo 运行Matlab演示程序 type 列出.M文件

doc 装入超文本文档 version 显示Matlab的版本号

help 启动联机帮助 what 列出当前目录下的有关文件

lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性

lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录

path 设置或查询Matlab路径

附录1.2管理变量与工作空间用命令

函数名功能描述函数名功能描述

clear 删除内存中的变量与函数 pack 整理工作空间内存

disp 显示矩阵与文本 save 将工作空间中的变量存盘

length 查询向量的维数 size 查询矩阵的维数

load 从文件中装入数据 who,whos 列出工作空间中的变量名

附录1.3文件与操作系统处理命令

函数名功能描述函数名功能描述

cd 改变当前工作目录 edit 编辑.M文件

delete 删除文件 matlabroot 获得Matlab的安装根目录

diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录

dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件

! 执行操作系统命令

附录1.4窗口控制命令

函数名功能描述函数名功能描述

echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面format 设置输出格式

附录1.5启动与退出命令

函数名功能描述函数名功能描述

matlabrc 启动主程序 quit 退出Matlab环境

startup Matlab自启动程序

附录2 运算符号与特殊字符附录

2.1运算符号与特殊字符

函数名功能描述函数名功能描述

+ 加 ... 续行标志

- 减 , 分行符(该行结果不显示)

* 矩阵乘 ; 分行符(该行结果显示)

.* 向量乘 % 注释标志

^ 矩阵乘方 ! 操作系统命令提示符

.^ 向量乘方矩阵转置

kron 矩阵kron积 . 向量转置

\ 矩阵左除 = 赋值运算

/ 矩阵右除 == 关系运算之相等

.\ 向量左除 ~= 关系运算之不等

./ 向量右除 < 关系运算之小于

: 向量生成或子阵提取 <= 关系运算之小于等于

() 下标运算或参数定义 > 关系运算之大于

[] 矩阵生成 >= 关系运算之大于等于

{} & 逻辑运算之与

. 结构字段获取符 | 逻辑运算之或

. 点乘运算,常与其他运算符联合使用(如.\) ~ 逻辑运算之非

xor 逻辑运算之异成

附录2.2逻辑函数

函数名功能描述函数名功能描述

all 测试向量中所用元素是否为真 is*(一类函数) 检测向量状态.其中*表示一个确定的函数(isinf)

any 测试向量中是否有真元素 *isa 检测对象是否为某一个类的对象

exist 检验变量或文件是否定义 logical 将数字量转化为逻辑量

find 查找非零元素的下标

附录3 语言结构与调试

附录3.1编程语言

函数名功能描述函数名功能描述

builtin 执行Matlab内建的函数 global 定义全局变量

eval 执行Matlab语句构成的字符串 nargchk 函数输入输出参数个数检验

feval 执行字符串指定的文件 script Matlab语句及文件信息

function Matlab函数定义关键词

附录3.2控制流程

函数名功能描述函数名功能描述

break 中断循环执行的语句 if 条件转移语句

case 与switch结合实现多路转移 otherwise 多路转移中的缺省执行部分

else 与if一起使用的转移语句 return 返回调用函数

elseif 与if一起使用的转移语句 switch 与case结合实现多路转移

end 结束控制语句块 warning 显示警告信息

error 显示错误信息 while 循环语句

for 循环语句

附录3.3交互输入

函数名功能描述函数名功能描述

input 请求输入 menu 菜单生成

keyboard 启动键盘管理 pause 暂停执行

附录3.4面向对象编程

函数名功能描述函数名功能描述

class 生成对象 isa 判断对象是否属于某一类

double 转换成双精度型 superiorto 建立类的层次关系

inferiorto 建立类的层次关系 unit8 转换成8字节的无符号整数

inline 建立一个内嵌对象

附录3.5调试

函数名功能描述函数名功能描述

dbclear 清除调试断点 dbstatus 列出所有断点情况

dbcont 调试继续执行 dbstep 单步执行

dbdown 改变局部工作空间内存 dbstop 设置调试断点

dbmex 启动对Mex文件的调试 sbtype 列出带命令行标号的.M文件dbquit 退出调试模式 dbup 改变局部工作空间内容

dbstack 列出函数调用关系

附录4 基本矩阵与矩阵处理

附录4.1基本矩阵

函数名功能描述函数名功能描述

eye 产生单位阵 rand 产生随机分布矩阵

linspace 构造线性分布的向量 randn 产生正态分布矩阵

logspace 构造等对数分布的向量 zeros 产生零矩阵

ones 产生元素全部为1的矩阵 : 产生向量

附录4.2特殊向量与常量

函数名功能描述函数名功能描述

ans 缺省的计算结果变量 non 非数值常量常由0/0或Inf/Inf获得computer 运行Matlab的机器类型 nargin 函数中参数输入个数eps 精度容许误差(无穷小) nargout 函数中输出变量个数

flops 浮点运算计数 pi 圆周率

i 复数单元 realmax 最大浮点数值

inf 无穷大 realmin 最小浮点数值

inputname 输入参数名 varargin 函数中输入的可选参数

j 复数单元 varargout 函数中输出的可选参数

附录4.3时间与日期

函数名功能描述函数名功能描述

calender 日历 eomday 计算月末

clock 时钟 etime 所用时间函数

cputime 所用的CPU时间 now 当前日期与时间

date 日期 tic 启动秒表计时器

datenum 日期(数字串格式) toc 读取秒表计时器

datestr 日期(字符串格式) weekday 星期函数

datevoc 日期(年月日分立格式)

附录4.4矩阵处理

函数名功能描述函数名功能描述

cat 向量连接 reshape 改变矩阵行列个数

diag 建立对角矩阵或获取对角向量 rot90 将矩阵旋转90度

fliplr 按左右方向翻转矩阵元素 tril 取矩阵的下三角部分

flipud 按上下方向翻转矩阵元素 triu 取矩阵的上三角部分repmat 复制并排列矩阵函数

附录5 特殊矩阵

函数名功能描述函数名功能描述

compan 生成伴随矩阵 invhilb 生成逆hilbert矩阵

gallery 生成一些小的测试矩阵 magic 生成magic矩阵

hadamard 生成hadamard矩阵 pascal 生成pascal矩阵

hankel 生成hankel矩阵 toeplitz 生成toeplitz矩阵

hilb 生成hilbert矩阵 wilkinson 生成wilkinson特征值测试矩阵

附录6 数学函数

附录6.1三角函数

函数名功能描述函数名功能描述

sin/asin 正弦/反正弦函数 sec/asec 正割/反正割函数

sinh/asinh 双曲正弦/反双曲正弦函数 sech/asech 双曲正割/反双曲正割函数cos/acos 余弦/反余弦函数 csc/acsc 余割/反余割函数

cosh/acosh 双曲余弦/反双曲余弦函数 csch/acsch 双曲余割/反双曲余割函数tan/atan 正切/反正切函数 cot/acot 余切/反余切函数

tanh/atanh 双曲正切/反双曲正切函数 coth/acoth 双曲余切/反双曲余切函数atan2 四个象限内反正切函数

附录6.2指数函数

函数名功能描述函数名功能描述

exp 指数函数 log10 常用对数函数

log 自然对数函数 sqrt 平方根函数

附录6.3复数函数

函数名功能描述函数名功能描述

abs 绝对值函数 imag 求虚部函数

angle 角相位函数 real 求实部函数

conj 共轭复数函数

附录6.4数值处理

函数名功能描述函数名功能描述

fix 沿零方向取整 round 舍入取整

floor 沿-∞方向取整 rem 求除法的余数

ceil 沿+∞方向取整 sign 符号函数

附录6.5其他特殊数学函数

函数名功能描述函数名功能描述

airy airy函数 erfcx 比例互补误差函数

besselh bessel函数(hankel函数) erfinv 逆误差函数

bessili 改进的第一类bessel函数 expint 指数积分函数

besselk 改进的第二类bessel函数 gamma gamma函数

besselj 第一类bessel函数 gammainc 非完全gamma函数

bessely 第二类bessel函数 gammaln gamma对数函数

beta beta函数 gcd 最大公约数

betainc 非完全的beta函数 lcm 最小公倍数

betaln beta对数函数 log2 分割浮点数

elipj Jacobi椭圆函数 legendre legendre伴随函数

ellipke 完全椭圆积分 pow2 基2标量浮点数

erf 误差函数 rat 有理逼近

erfc 互补误差函数 rats 有理输出

================================================================

A a

abs 绝对值、模、字符的ASCII码值

acos 反余弦

acosh 反双曲余弦

acot 反余切

acoth 反双曲余切

acsc 反余割

acsch 反双曲余割

align 启动图形对象几何位置排列工具

all 所有元素非零为真

angle 相角

ans 表达式计算结果的缺省变量名

any 所有元素非全零为真

area 面域图

argnames 函数M文件宗量名

asec 反正割

asech 反双曲正割

asin 反正弦

asinh 反双曲正弦

assignin 向变量赋值

atan 反正切

atan2 四象限反正切

atanh 反双曲正切

autumn 红黄调秋色图阵

axes 创建轴对象的低层指令

axis 控制轴刻度和风格的高层指令

B b

bar 二维直方图

bar3 三维直方图

bar3h 三维水平直方图

barh 二维水平直方图

base2dec X进制转换为十进制

bin2dec 二进制转换为十进制

blanks 创建空格串

bone 蓝色调黑白色图阵

box 框状坐标轴

break while 或for 环中断指令

brighten 亮度控制

C c

capture (3版以前)捕获当前图形

cart2pol 直角坐标变为极或柱坐标

cart2sph 直角坐标变为球坐标

cat 串接成高维数组

caxis 色标尺刻度

cd 指定当前目录

cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整

cell 创建元胞数组

cell2struct 元胞数组转换为构架数组celldisp 显示元胞数组内容

cellplot 元胞数组内部结构图示

char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数

chi2inv 分布逆累计概率函数

chi2pdf 分布概率密度函数

chi2rnd 分布随机数发生器

chol Cholesky分解

clabel 等位线标识

cla 清除当前轴

class 获知对象类别或创建对象

clc 清除指令窗

clear 清除内存变量和函数

clf 清除图对象

clock 时钟

colorcube 三浓淡多彩交叉色图矩阵

colordef 设置色彩缺省值

colormap 色图

colspace 列空间的基

close 关闭指定窗口

colperm 列排序置换向量

comet 彗星状轨迹图

comet3 三维彗星轨迹图

compass 射线图

compose 求复合函数

cond (逆)条件数

condeig 计算特征值、特征向量同时给出条件数condest 范 -1条件数估计

conj 复数共轭

contour 等位线

contourf 填色等位线

contour3 三维等位线

contourslice 四维切片等位线图

conv 多项式乘、卷积

cool 青紫调冷色图

copper 古铜调色图

cos 余弦

cosh 双曲余弦

cot 余切

coth 双曲余切

cplxpair 复数共轭成对排列

csc 余割

csch 双曲余割

cumsum 元素累计和

cumtrapz 累计梯形积分

cylinder 创建圆柱

D d

dblquad 二重数值积分

deal 分配宗量

deblank 删去串尾部的空格符

dec2base 十进制转换为X进制

dec2bin 十进制转换为二进制

dec2hex 十进制转换为十六进制

deconv 多项式除、解卷

delaunay Delaunay 三角剖分

del2 离散Laplacian差分

demo Matlab演示

det 行列式

diag 矩阵对角元素提取、创建对角阵

diary Matlab指令窗文本内容记录

diff 数值差分、符号微分

digits 符号计算中设置符号数值的精度

dir 目录列表

disp 显示数组

display 显示对象内容的重载函数

dlinmod 离散系统的线性化模型

dmperm 矩阵Dulmage-Mendelsohn 分解

dos 执行DOS 指令并返回结果

double 把其他类型对象转换为双精度数值drawnow 更新事件队列强迫Matlab刷新屏幕dsolve 符号计算解微分方程

E e

echo M文件被执行指令的显示

edit 启动M文件编辑器

eig 求特征值和特征向量

eigs 求指定的几个特征值

end 控制流FOR等结构体的结尾元素下标

eps 浮点相对精度

error 显示出错信息并中断执行

errortrap 错误发生后程序是否继续执行的控制erf 误差函数

erfc 误差补函数

erfcx 刻度误差补函数

erfinv 逆误差函数

errorbar 带误差限的曲线图

etreeplot 画消去树

eval 串演算指令

evalin 跨空间串演算指令

exist 检查变量或函数是否已定义

exit 退出Matlab环境

exp 指数函数

expand 符号计算中的展开操作

expint 指数积分函数

expm 常用矩阵指数函数

expm1 Pade法求矩阵指数

expm2 Taylor法求矩阵指数

expm3 特征值分解法求矩阵指数

eye 单位阵

ezcontour 画等位线的简捷指令

ezcontourf 画填色等位线的简捷指令

ezgraph3 画表面图的通用简捷指令

ezmesh 画网线图的简捷指令

ezmeshc 画带等位线的网线图的简捷指令

ezplot 画二维曲线的简捷指令

ezplot3 画三维曲线的简捷指令

ezpolar 画极坐标图的简捷指令

ezsurf 画表面图的简捷指令

ezsurfc 画带等位线的表面图的简捷指令

F f

factor 符号计算的因式分解

feather 羽毛图

feedback 反馈连接

feval 执行由串指定的函数

fft 离散Fourier变换

fft2 二维离散Fourier变换

fftn 高维离散Fourier变换

fftshift 直流分量对中的谱

fieldnames 构架域名

figure 创建图形窗

fill3 三维多边形填色图

find 寻找非零元素下标

findobj 寻找具有指定属性的对象图柄

findstr 寻找短串的起始字符下标

findsym 机器确定内存中的符号变量

finverse 符号计算中求反函数

fix 向零取整

flag 红白蓝黑交错色图阵

fliplr 矩阵的左右翻转

flipud 矩阵的上下翻转

flipdim 矩阵沿指定维翻转

floor 向负无穷取整

flops 浮点运算次数

flow Matlab提供的演示数据

fmin 求单变量非线性函数极小值点(旧版)fminbnd 求单变量非线性函数极小值点

fmins 单纯形法求多变量函数极小值点(旧版)fminunc 拟牛顿法求多变量函数极小值点fminsearch 单纯形法求多变量函数极小值点fnder 对样条函数求导

fnint 利用样条函数求积分

fnval 计算样条函数区间内任意一点的值

fnplt 绘制样条函数图形

fopen 打开外部文件

for 构成for环用

format 设置输出格式

fourier Fourier 变换

fplot 返函绘图指令

fprintf 设置显示格式

fread 从文件读二进制数据

fsolve 求多元函数的零点

full 把稀疏矩阵转换为非稀疏阵funm 计算一般矩阵函数

funtool 函数计算器图形用户界面fzero 求单变量非线性函数的零点

G g

gamma 函数

gammainc 不完全函数

gammaln 函数的对数

gca 获得当前轴句柄

gcbo 获得正执行"回调"的对象句柄gcf 获得当前图对象句柄

gco 获得当前对象句柄

geomean 几何平均值

get 获知对象属性

getfield 获知构架数组的域

getframe 获取影片的帧画面

ginput 从图形窗获取数据

global 定义全局变量

gplot 依图论法则画图

gradient 近似梯度

gray 黑白灰度

grid 画分格线

griddata 规则化数据和曲面拟合

gtext 由鼠标放置注释文字

guide 启动图形用户界面交互设计工具

H h

harmmean 调和平均值

help 在线帮助

helpwin 交互式在线帮助

helpdesk 打开超文本形式用户指南hex2dec 十六进制转换为十进制

hex2num 十六进制转换为浮点数hidden 透视和消隐开关

hilb Hilbert矩阵

hist 频数计算或频数直方图

histc 端点定位频数直方图

histfit 带正态拟合的频数直方图hold 当前图上重画的切换开关

horner 分解成嵌套形式

hot 黑红黄白色图

hsv 饱和色图

I i

if-else-elseif 条件分支结构

ifft 离散Fourier反变换

ifft2 二维离散Fourier反变换

ifftn 高维离散Fourier反变换ifftshift 直流分量对中的谱的反操作ifourier Fourier反变换

i, j 缺省的"虚单元"变量

ilaplace Laplace反变换

imag 复数虚部

image 显示图象

imagesc 显示亮度图象

imfinfo 获取图形文件信息

imread 从文件读取图象

imwrite 把

imwrite 把图象写成文件

ind2sub 单下标转变为多下标

inf 无穷大

info MathWorks公司网点地址

inline 构造内联函数对象

inmem 列出内存中的函数名

input 提示用户输入

inputname 输入宗量名

int 符号积分

int2str 把整数数组转换为串数组interp1 一维插值

interp2 二维插值

interp3 三维插值

interpn N维插值

interpft 利用FFT插值

intro Matlab自带的入门引导

inv 求矩阵逆

invhilb Hilbert矩阵的准确逆ipermute 广义反转置

isa 检测是否给定类的对象

ischar 若是字符串则为真

isequal 若两数组相同则为真

isempty 若是空阵则为真

isfinite 若全部元素都有限则为真isfield 若是构架域则为真

isglobal 若是全局变量则为真

ishandle 若是图形句柄则为真

ishold 若当前图形处于保留状态则为真isieee 若计算机执行IEEE规则则为真isinf 若是无穷数据则为真

isletter 若是英文字母则为真

islogical 若是逻辑数组则为真ismember 检查是否属于指定集

isnan 若是非数则为真

isnumeric 若是数值数组则为真

isobject 若是对象则为真

isprime 若是质数则为真

isreal 若是实数则为真

isspace 若是空格则为真

issparse 若是稀疏矩阵则为真

isstruct 若是构架则为真

isstudent 若是Matlab学生版则为真iztrans 符号计算Z反变换

J j , K k

jacobian 符号计算中求Jacobian 矩阵jet 蓝头红尾饱和色

jordan 符号计算中获得 Jordan标准型keyboard 键盘获得控制权

kron Kronecker乘法规则产生的数组

L l

laplace Laplace变换

lasterr 显示最新出错信息

lastwarn 显示最新警告信息

leastsq 解非线性最小二乘问题(旧版)

legend 图形图例

lighting 照明模式

line 创建线对象

lines 采用plot 画线色

linmod 获连续系统的线性化模型

linmod2 获连续系统的线性化精良模型linspace 线性等分向量

ln 矩阵自然对数

load 从MAT文件读取变量

log 自然对数

log10 常用对数

log2 底为2的对数

loglog 双对数刻度图形

logm 矩阵对数

logspace 对数分度向量

lookfor 按关键字搜索M文件

lower 转换为小写字母

lsqnonlin 解非线性最小二乘问题

lu LU分解

M m

mad 平均绝对值偏差

magic 魔方阵

maple &nb, sp; 运作 Maple格式指令

mat2str 把数值数组转换成输入形态串数组material 材料反射模式

max 找向量中最大元素

mbuild 产生EXE文件编译环境的预设置指令mcc 创建MEX或EXE文件的编译指令

mean 求向量元素的平均值

median 求中位数

menuedit 启动设计用户菜单的交互式编辑工具mesh 网线图

meshz 垂帘网线图

meshgrid 产生"格点"矩阵

methods 获知对指定类定义的所有方法函数mex 产生MEX文件编译环境的预设置指令mfunlis 能被mfun计算的MAPLE经典函数列表mhelp 引出 Maple的在线帮助

min 找向量中最小元素

mkdir 创建目录

mkpp 逐段多项式数据的明晰化

mod 模运算

more 指令窗中内容的分页显示

movie 放映影片动画

moviein 影片帧画面的内存预置

mtaylor 符号计算多变量Taylor级数展开

N n

ndims 求数组维数

NaN 非数(预定义)变量

nargchk 输入宗量数验证

nargin 函数输入宗量数

nargout 函数输出宗量数

ndgrid 产生高维格点矩阵

newplot 准备新的缺省图、轴

nextpow2 取最接近的较大2次幂

nnz 矩阵的非零元素总数

nonzeros 矩阵的非零元素

norm 矩阵或向量范数

normcdf 正态分布累计概率密度函数normest 估计矩阵2范数

norminv 正态分布逆累计概率密度函数normpdf 正态分布概率密度函数

normrnd 正态随机数发生器

notebook 启动Matlab和Word的集成环境null 零空间

num2str 把非整数数组转换为串

numden 获取最小公分母和相应的分子表达式nzmax 指定存放非零元素所需内存

O o

ode1 非Stiff 微分方程变步长解算器

ode15s Stiff 微分方程变步长解算器

ode23t 适度Stiff 微分方程解算器

ode23tb Stiff 微分方程解算器

ode45 非Stiff 微分方程变步长解算器odefile ODE 文件模板

odeget 获知ODE 选项设置参数

odephas2 ODE 输出函数的二维相平面图odephas3 ODE 输出函数的三维相空间图odeplot ODE 输出函数的时间轨迹图

odeprint 在Matlab指令窗显示结果

odeset 创建或改写 ODE选项构架参数值

ones 全1数组

optimset 创建或改写优化泛函指令的选项参数值orient 设定图形的排放方式

orth 值空间正交化

P p

pack 收集Matlab内存碎块扩大内存

pagedlg 调出图形排版对话框

patch 创建块对象

path 设置Matlab搜索路径的指令

pathtool 搜索路径管理器

pause 暂停

pcode 创建预解译P码文件

pcolor 伪彩图

peaks Matlab提供的典型三维曲面

permute 广义转置

pi (预定义变量)圆周率

pie 二维饼图

pie3 三维饼图

pink 粉红色图矩阵

pinv 伪逆

plot 平面线图

plot3 三维线图

plotmatrix 矩阵的散点图

plotyy 双纵坐标图

poissinv 泊松分布逆累计概率分布函数

poissrnd 泊松分布随机数发生器

pol2cart 极或柱坐标变为直角坐标

polar 极坐标图

poly 矩阵的特征多项式、根集对应的多项式

poly2str 以习惯方式显示多项式

poly2sym 双精度多项式系数转变为向量符号多项式polyder 多项式导数

polyfit 数据的多项式拟合

polyval 计算多项式的值

polyvalm 计算矩阵多项式

pow2 2的幂

ppval 计算分段多项式

pretty 以习惯方式显示符号表达式

print 打印图形或SIMULINK模型

printsys 以习惯方式显示有理分式prism 光谱色图矩阵

procread 向MAPLE输送计算程序profile 函数文件性能评估器propedit 图形对象属性编辑器

pwd 显示当前工作目录

Q q

quad 低阶法计算数值积分

quad8 高阶法计算数值积分(QUADL) quit 推出Matlab 环境

quiver 二维方向箭头图

quiver3 三维方向箭头图

R r

rand 产生均匀分布随机数

randn 产生正态分布随机数randperm 随机置换向量

range 样本极差

rank 矩阵的秩

rats 有理输出

rcond 矩阵倒条件数估计

real 复数的实部

reallog 在实数域内计算自然对数realpow 在实数域内计算乘方realsqrt 在实数域内计算平方根realmax 最大正浮点数

realmin 最小正浮点数

rectangle 画"长方框"

rem 求余数

repmat 铺放模块数组

reshape 改变数组维数、大小residue 部分分式展开

return 返回

ribbon 把二维曲线画成三维彩带图rmfield 删去构架的域

roots 求多项式的根

rose 数扇形图

rot90 矩阵旋转90度

rotate 指定的原点和方向旋转

实验四 MATLAB符号运算

实验四 MATLAB 符号运算 一、实验目的 掌握符号变量和符号表达式的创建,掌握MATLAB 的symbol 工具箱的一些基本应用。 二、实验内容 (1) 符号变量、表达式、方程及函数的表示。 (2) 符号微积分运算。 (3) 符号表达式的操作和转换。 (4) 符号微分方程求解。 三、实验步骤 1. 符号运算的引入 在数值运算中如果求x x x πsin lim 0→,则可以不断地让x 接近于0,以求得表达式接近什么数,但是终究不能令0=x ,因为在数值运算中0是不能作除数的。MATLAB 的符号运算能解决这类问题。输入如下命令: >>f=sym('sin(pi*x)/x') >>limit(f,'x',0) >> f=sym('sin(pi*x)/x') f = sin(pi*x)/x >> limit(f,'x',0) ans = Pi 2. 符号常量、符号变量、符号表达式的创建 1) 使用sym( )创建 输入以下命令,观察Workspace 中A 、B 、f 是什么类型的数据,占用多少字节的内存空间。 >> A=sym('1') >> B=sym('x') >> f=sym('2*x^2+3*y-1') >> clear >> f1=sym('1+2') >> f2=sym(1+2) >> f3=sym('2*x+3') >> f4=sym(2*x+3) >> x=1 >> f4=sym(2*x+3) > A=sym('1') A = 1

>> B=sym('x') B = x >> f=sym('2*x^2+3*y-1') f = 2*x^2+3*y-1 >> clear >> f1=sym('1+2') f1 = 1+2 >> f2=sym(1+2) f2 = 3 >> f3=sym('2*x+3') f3 = 2*x+3 >> f4=sym(2*x+3) ??? Undefined function or variable 'x'. >> x=1 x = >> f4=sym(2*x+3) f4 =

matlab中的自定义函数与调用

Matlab自定义函数 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件; 2、函数文件+子函数:定义一个具有多个自定义函数的M文件; 3、Inline:无需M文件,直接定义; 4、Syms+subs:无需M文件,直接定义; 5、字符串+subs:无需M文件,直接定义. 6、匿名函数 7、直接通过@符号定义. 1、函数文件+调用函数文件:定义多个M文件: %调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t);%调用函数时要注意实参与形参的匹配! fprintf(‘%4d^(1/3)=%6.4f\n’,t,y); end %自定义函数文件:mylfg.m function y=mylfg(x)%注意:函数名(mylfg)必须与文件名(mylfg.m)一致 Y=x^(1/3); 注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。 2、函数文件+子函数:定义一个具有多个子函数的M文件 %函数文件:funtry2.m function[]=funtry2()%可以无自变量()或无因变量[] for t=1:10 y=lfg2(t); fprintf('%4d^(1/3)=%6.4f\n',t,y); end function y=lfg2(x)%%子函数 y=x^(1/3);

%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。 3、Inline:无需M文件,直接定义; %inline命令用来定义一个内联函数:f=inline(‘函数表达式’,‘变量1’,’变量2’,……)。 调用方式:y=f(数值列表)%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。 例如: f=inline(‘x^2+y’,’x’,’y’); z=f(2,3) Ans=7 注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 内联函数定义方式是将f作为一个内部函数调用。其特点是:调用方式最接近于我们平时对函数的定义,使程序更具可读性。同时由于它是基于Matlab的数值计算内核的,所以它的运算速度较快,程序更有效率。 这种定义方式的缺点: 定义一个内联函数用去的内存空间比相同条件下其他的方法要大得多。 该方法只能对数值进行代入,不支持符号代入,并且对于定义后的函数不能进行求导等符号运算。 例:通过命令clear清除工作空间的所有变量后,执行如下指令 Clear Clc f=’x^2’; Syms x g; g=x^2; h=inline(‘x^2’,’x’); whos 4、Syms+subs:无需M文件,直接定义; 用syms定义一个符号表达式,用subs调用: Syms f x%定义符号 f=1/(1+x^2);%定义符号表达式也是符号

matlab符号运算

MATLAB程序设计教程(9)——MATLAB符号计算 by:ysuncn(欢迎转载,请注明原创信息) 第9章MATLAB符号计算 9.1 符号对象 9.2 符号微积分 9.3 级数 9.4 符号方程求解 9.1 符号对象 9.1.1 建立符号对象 1.建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。

下面的命令用于比较符号常量与数值常量在代数运算时的差别。 (2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。 2.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 9.1.2 符号表达式运算 1.符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。

MATLAB各种“窗函数”定义及调用

MATLAB窗函数大全 1.矩形窗(Rectangle Window)调用格式:w=boxcar(n),根据长度n 产生一个矩形窗w。 2.三角窗(Triangular Window)调用格式:w=triang(n),根据长度n 产生一个三角窗w。 3.汉宁窗(Hanning Window)调用格式:w=hanning(n),根据长度n 产生一个汉宁窗w。 4.海明窗(Hamming Window)调用格式:w=hamming(n),根据长度n 产生一个海明窗w。 5.布拉克曼窗(Blackman Window)调用格式:w=blackman(n),根据长度n 产生一个布拉克曼窗w。 6.恺撒窗(Kaiser Window)调用格式:w=kaiser(n,beta),根据长度n 和影响窗函数旁瓣的β参数产生一个恺撒窗w。 窗函数: 1.矩形窗:利用w=boxcar(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。‘w=boxcar(n)’等价于‘w=ones(1,n)’. 2.三角窗:利用w=triang(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,它的元素由窗函数的值组成。 w=triang(N-2)等价于bartlett(N)。

3.汉宁窗:利用w=hanning(n)得到窗函数,其中n为窗函数的长度,而返回值w 为一个n 阶的向量,包含了窗函数的n个系数。 4.海明窗:利用w=hamming(n)得到窗函数,其中n为窗函数的长度,而返回值w 为一个n 阶的向量,包含了窗函数的n个系数。它和汉宁窗的主瓣宽度相同,但是它的旁瓣进一步被压低。 5.布拉克曼窗:利用w=blackman(n)得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。它的主瓣宽度是矩形窗主瓣宽度的3倍,为12*pi/N,但是它的最大旁瓣值比主瓣值低57dB。 6.切比雪夫窗:它是等波纹的,利用函数w=chebwin(N,R)方式设计出N阶的切比雪夫2窗函数,函数的主瓣值比旁瓣值高RdB,且旁瓣是等波纹的。 7.巴特里特窗:利用w=bartlett(n)的形式得到窗函数,其中n为窗函数的长度,而返回值w为一个n阶的向量,包含了窗函数的n个系数。 8.凯塞窗:利用w=kaiser(n,beta)的形式得到窗函数。

MATLAB_M文件与M函数

M文件与M函数 Matlab输入命令的常用方式有两种:一种是直接在Matlab的命令窗门中逐条输入Matlab 命令;二是m文件工作方式。当命令行很简单时,使用逐条输入方式还是比较方便的。但当命令行很多时(比如说几十行乃至全成百上千行命令),显然再使用这种方式输入MATLAB 命令,就会显得杂乱无章,不易于把握程序的具体走向,并且给程序的修改和维护带来了很大的麻烦。这时,建议采用Matlab命令的第二种输入形式m文件工作方式。 m文件工作方式,指的是将要执行的命令全部写在一个文本文件中,这样既能使程序显得简洁明了,又便于对程序的修改与维护。m文件直接采用Matlab命令编写,就像在Matlab 的命令窗口直接输入命令一样,因此调试起来也十分方便,并且增强了程序的交互性。 m文件与其他文本文件一样,可以在任何文本编辑器中进打编辑、存储、修改和读取。利用m文件还可以根据白己的需要编写一些函数,这些函数也可以橡Matlab提供的函数一样进行调用。从某种意义上说,这也是对MATLAB的二次开发。 m文件有两种形式:一种是命令方式或称脚本方式;另一种就是函数文件形式。两种形式的文件扩展名均是.m。 1、M文件 当遇到输入命令较多以及要重复输入命令的情况时,利用命令文件就显得很方便了。将所有要执行的命令按顺序放到一个扩展名为.m的文本文件中,每次运行时只需在MATLAB 的命令窗口输入m文件的文件名就可以了。需要注意的是,m文件最好直接放在Matlab 的默认搜索路径下(一般是Matlab安装目录的子目录work中),这样就不用设置m文件的路径了,否则应当用路径操作指令path重新设置路径。另外,m文件名不应该与Matlab的内置函数名以及工具箱中的函数重名,以免发生执行错误命令的现象。Matlab对命令文件的执行等价于从命令窗口中顺序执行文件中的所有指令。命令文件可以访问Matlab工作空间里的任何变量及数据。命令文件运行过程中产生的所有变量都等价于从Matlab工作空间中创建这些变量。因此,任何其他命令文件和函数都可以自由地访问这些变量。这些变量一旦产生就一直保存在内存中,只有对它们重新赋值,它们的原有值才会变化。关机后,这里变量也就全部消失了。另外,在命令窗口中运行clear命令,也可以把这些变量从工作空间中删去。当然,在Matlab的工作空间窗口中也可以用鼠标选择想要删除的变量,从而将这些变量从工作空间中删除。 接下来,编写一个名为test.m的命令文件,用来计算矩阵1到100的和,并把它放到变量s中。 第一步创建新的M-文件。在Matlab主菜单上选择菜单命令File→New→M-File

matlab符号运算函数大全

m a t l a b符号运算函数大 全 The Standardization Office was revised on the afternoon of December 13, 2020

算术符号操作 命令 +、-、*、.*、\、.\、/、./、^、.^、’、.’ 功能符号矩阵的算术操作 用法如下: A+B、A-B 符号阵列的加法与减法。 若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。 A*B 符号矩阵乘法。 A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵 A的列数等于矩阵B的行数。即:若 A n*k* B k*m=(a ij)n*k.*(b ij)k*m= C n*m=(c ij)n*m,则,i=1,2,…,n; j=1,2,…,m。或者至少有一个为标量时,方可进行乘法操作,否则 将返回一出错信息。 A.*B 符号数组的乘法。 A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型 阵列,或至少有一个为标量。即: A n*m.* B n*m=(a ij)n*m.*(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij* b ij, i=1,2,…,n;j=1,2,…,m。 A\B 矩阵的左除法。 X=A\B为符号线性方程组A*X=B的解。我们指出的是,A\B近 似地等于inv(A)*B。若X不存在或者不唯一,则产生一警告信 息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方 程组必须是相容的。 A.\B 数组的左除法。 A.\B为按对应的分量进行相除。若A与B为同型阵列时, A n*m.\ B n*m=(a ij)n*m.\(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij\ b ij,i=1,2,…,n; j=1,2,…,m。若若A与B中至少有一个为标量,则把标量扩大为 与另外一个同型的阵列,再按对应的分量进行操作。 A/B 矩阵的右除法。 X=B/A为符号线性方程组X*A=B的解。我们指出的是,B/A粗 略地等于B*inv(A)。若X不存在或者不唯一,则产生一警告信 息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方 程组必须是相容的。 A./B 数组的右除法。 A./B为按对应的分量进行相除。若A与B为同型阵列时, A n*m./ B n*m=(a ij)n*m./(b ij)n*m= C n*m=(c ij)n*m,则c ij= a ij/b ij,i=1,2,…,n; j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与 另外一个同型的阵列,再按对应的分量进行操作。 A^B 矩阵的方幂。

MATLAB自定义函数及局部变量.docx

MATLAB 口定义函数及局部变量 2009-11-20 09:17 在开始学习MATLAB的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLAB中口定义函数的问题,随之而来口然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1)函数定义行:function[outl, out2,.. ]=filcname (ini, in2,..),输入和输岀参数个数分别由nargin和nargout两个MATLAB保留的变量来给岀。 (2)第一行帮助行,以%开头,作为1 ookfor指令搜索的行 (3)函数体说明及有关注解:以(%)开头,用以说明函数的作用及有关内容。如果不希望显示某段信息,可在它的前面加空行 (4)函数体:函数体内使用的除返回和输入变量这些在function语句屮直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会口动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如卜?血就是一个标准的口字义函数。 function A=myhilb(n, m) % MYH1LB是一个示范性的M-function? % A=MYHILB(N, M)会生成一个NXM 的Hilbert 矩阵 A. % A二MYHILB(N)会生成一个NXN 的Hilbert 矩阵. % MYI1ILB(N,M)仅仅显示一个II订bert矩阵,而不会返冋任何矩阵。 %这些内容在用help时不会显示 if nargout>l, error Too many output arguments.') ; end if nargin=l, m=n; el seif nargin=0 nargin>2 error Wrong number of iutput arguments.');

完整word版,MATLAB符号运算

符号运算 科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。 符号变量的生成和使用 1、符号变量、符号表达式和符号方程的生成 (1)、使用sym函数定义符号变量和符号表达式 单个符号变量 sqrt(2) sym(sqrt(2)) %显示精确结果 a=sqrt(sym(2)) %显示精确结果 double(a) sym(2)/sym(3) %显示精确结果 2/5+1/3 sym(2/5+1/3) %显示精确结果 sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果 sym函数定义符号表达式:单个变量定义法,整体定义法 单个变量定义法 a=sym('a') b=sym('b') c=sym('c') x=sym('x') f=a*x^2+b*x+c 整体定义法 f=sym('a*x^2+b*x+c') g=f^2+4*f-2 (2)、使用syms函数定义符号变量和符号表达式 一次可以创建任意多个符号变量syms var1 var2 var3… syms a b c x f=a*x^2+b*x+c g=f^2+4*f-2 (3)、符号方程的生成 函数:数字和变量组陈的代数式 方程:函数和等号组成的等式 用sym函数生成符号方程: equation1=sym('sin(x)+cos(x)=1') 2、符号变量的基本操作 (1)、findsym函数用于寻找符号变量 findsym(f):找出f表达式中的符号变量 findsym(s,n):找出表达式s中n个与x接近的变量 syms a alpha b x1 y findsym(alpha+a+b)

MATLAB自定义函数及局部变量

MATLA自定义函数及局部变量 2009-11-20 09:17 在开始学习MATLA的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLA中自定义函数的问题,随之而来自然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1) 函数定义行:function[out1,out2,..]=filename(in1,in2,..) ,输入和输出参数个数分别由nargin和nargout两个MATLA保留的变量来给出。 (2) 第一行帮助行,以%开头,作为lookfor 指令搜索的行 (3) 函数体说明及有关注解:以( %)开头,用以说明函数的作用及有关内 容。如果不希望显示某段信息,可在它的前面加空行 (4) 函数体:函数体内使用的除返回和输入变量这些在function 语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLA的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如下面就是一个标准的自字义函数 function A=myhilb(n, m) % MYHILB 是一个示范性的M-function. % A=MYHILB(N, M)会生成一个NX M 的Hilbert 矩阵A. % A=MYHILB(N会生成一个NX N 的Hilbert 矩阵. % MYHILB(N,M) 仅仅显示一个Hilbert 矩阵,而不会返回任何矩阵 %这些内容在用help 时不会显示 if nargout>1, error('Too many output arguments.'); end if nargin==1, m=n; elseif nargin==0 | nargin>2 error('Wrong number of iutput arguments.');

Matlab自定义函数的五种方法

Matlab自定义函数的五种方法 [转] n 1、函数文件+调用命令文件:需单独定义一个自定义函数的M文件; n 2、函数文件+子函数:定义一个具有多个自定义函数的M文件; n 3、Inline:无需M文件,直接定义; n 4、Syms+subs: 无需M文件,直接定义; n 5、字符串+subs:无需M文件,直接定义. 1、函数文件+调用函数文件:定义多个M文件: % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t); fprintf(‘%4d^(1/3)=%6.4f\n’,t,y); end %自定义函数文件: mylfg.m function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致 Y=x^(1/3); 注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。 2、函数文件+子函数:定义一个具有多个子函数的M 文件

%命令文件:funtry2.m function []=funtry2() for t=1:10 y=lfg2(t) fprintf(‘%4d^(1/3)=%6.4f\n’); End function y=lfg2(x) Y= x^(1/3); %注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。 3、Inline:无需M文件,直接定义; %inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。 调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。 例如: f=inline(‘x^2+y’,’x’,’y’); z=f(2,3) Ans=7 注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab 的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。 例: Clear Clc

matlab符号运算符

Matlab符号运算符的使用 一、&&/||/&/| |:数组逻辑或 ||:先决逻辑或 &:数组逻辑与 &&:先决逻辑与 &&和||被称为&和|的short circuit形式。 先决逻辑符号含义: 先判断左边是否为真;若为真,则不再判断右边;若为假,才继续进行或运算 先判断左边是否为假;若为假,则不再判断右边;若为真,才继续进行与运算两种运算符号的区别: 先决逻辑运算的运算对象只能是标量 数组逻辑运算可为任何维数组,运算符两边维数要相同 举例分析: A&B :首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。 A&&B:首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假, 就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用, 如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A 对减少计算量是有好处的。 另外这也可以防止类似被0除的错误。 Matlab中的if和while语句中的逻辑与和逻辑或都是默认使用short-circuit形式。// 这可能就是有时候用&和| 会报错的原因。

二、系统结构体内的变量 一般都是小写。 matlab区分大小写。 三、== 表示逻辑相等,返回结果,相等为1,不等为0。 四、.*(times)点乘 times Array multiply 数组乘 Syntax c = a.*b c = times(a,b) Description c = a.*b multiplies arrays a an d b element-by-element and returns th e result in c. Inputs a and b must have the same size unless one is a scalar. 注释:a、b要同尺寸,或其中一个为标量。 c = times(a,b) is calle d for th e syntax a.*b when a or b is an object. Example a = [1 2 3]'; b = [5 6 7]'; c = a.*b; 五、矩阵或向量共轭转置“’”和转置“.’” 若矩阵由实数构成,二者作用一样;

MatLab在函数的求解方法

MatLab & 数学建模第四讲数值计算

一、方程求解 求解单个代数方程 MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等号),则在求解之前函数solve将表达式置成等于0。 >> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the eqution ans= [1/2/a*(-b+(b^2-4*a*c)^1/2)] [1/2/a*(-b-(b^2-4*a*c)^1/2)] 结果是符号向量,其元素是方程的2个解。如果想对非缺省x变量求解,solve 必须指定变量。 >> solve( ' a*x^2+b*x+c ' , ' b ' ) % solve for b ans= -(a*x^2+c)/x 带有等号的符号方程也可以求解。 >> f=solve( ' cos(x)=sin(x) ' ) % solve for x f= 1/4*pi >> t=solve( ' tan(2*x)=sin(x) ' ) t= [ 0] [acos(1/2+1/2*3^(1/2))] [acos(1/2=1/2*3^(1/2))] 并得到数值解。 >> numeric(f) ans=

0.7854 >> numeric(t) ans= 0 + 0.8314i 1.9455 注意在求解周期函数方程时,有无穷多的解。在这种情况下,solve对解的搜索范围限制在接近于零的有限范围,并返回非唯一的解的子集。 如果不能求得符号解,就计算可变精度解。 >> x=solve( ' exp(x)=tan(x) ' ) x= 1.306326940423079 代数方程组求解 可以同时求解若干代数方程,语句solve(s1,s2,.....,sn)对缺省变量求解n个方程,语句solve(s1,s2,...,sn,' v1,v2,...,vn ')对n个' v1,v2,...vn '的未知数求解n个方程。 solve(f) 解符号方程式f。 solve(f1,…,fn) 解由f1,…,fn组成的联立方程式。 我们先定义以下的方程式: >>eq1 = 'x-3=4'; % 注意也可写成'eq1=x-7' >>eq2 = 'x*2-x-6=0'; % 注意也可写成'eq2=x*2-x-6' >>eq3 = 'x2+2*x+4=0'; >>eq4 = '3*x+2*y-z=10'; >>eq5 = '-x+3*y+2*z=5'; >>eq6 = 'x-y-z=-1'; >>solve(eq1) ans=

实验5 matlab自定义函数与导数应用

实验5 matlab 自定义函数与导数应用 实验目的 1.学习matlab 自定义函数. 2.加深理解罗必塔法则、极值、最值、单调性. 实验内容 1.学习matlab 自定义函数及求函数最小值命令. 函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我们输入自变量时,计算机才会给出函数值,matlab 软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab 允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab 函数库中,显然这为matlab 提供了扩展的功能,无庸置疑,这也正是matlab 的精髓所在.因为matlab 的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab 自定义函数是一个指令集合,第一行必须以单词function 作为引导词,存为具有扩展名“.m ”的文件,故称之为函数M -文件. 函数M -文件的定义格式为: function 输出参数=函数名(输入参数) 函数体 …… 函数体 一旦函数被定义,就必须将其存为M -文件,以便今后可随时调用.比如我们希望建立 函数12)(2++=x x x f ,在matlab 工作区中输入命令: syms x ;y=x^2+2*x+1; 不能建立函数关系,只建立了一个变量名为y 的符号表达式,当我们调用y 时,将返回这一表达式. y ? y=x^2+2*x+1 当给出x 的值时,matlab 不能给出相应的函数值来. x=3;y ? y=x^2+2*x+1 如果我们先给x 赋值. x=3;y=x^2+2*x+1 得结果:y=16 若希望得出2|=x y 的值,输入: x=2;y ? 得结果:y=16,不是2=x 时的值.读者从这里已经领悟到在matlab 工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill 打开matlab 文本编辑器,输入:

MATLAB部分函数使用方法

读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG 等。比如 >> f = imread('chestxray.jpg'); 读进来的图像数据被保存在变量f中。尾部的分号用来抑制输出。如果图片是彩色的,可以用rgb2gray转换成灰度图: >> f = rgb2gray(f); 然后可以用size函数看图像的大小 >> size(f) 如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N >> [M, N] = size(f); 用whos命令查看变量的属性 >> whos f 显示图像:用imshow显示图像 imshow(f, G) 其中f是图像矩阵,G是像素的灰度级,G可以省略。比如 >> imshow(f, [100 200]) 图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。 pixval 例如 >> f = imread('rose_512.tif'); >> whos f >> imshow(f) 如果要同时显示两幅图像,可以用figure命令,比如 >> figure, imshow(g) 用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号: >> imshow(h, []) 可以使动态范围比较窄的图像显示更清楚。 写图像。用imwrite写图像 imwrite(f, 'filename') 文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如

>> imwrite(f, 'patient10_run1.tif', 'tif') 也可以写成 >> imwrite(f, 'patient10_run1.tif') 还可以有其他参数,比如jepg图像还有质量参数: >> imwrite(f, 'filename.jpg', 'quality', q) q是0到100之间的一个整数。对比不同质量的图像效果。用imfinfo命令可以查看一个图像的格式信息,比如 >> imfinfo bubbles25.jpg 可以把图像信息保存到变量中 >> K = imfinfo('bubbles25.jpg'); >> image_bytes = K.Width * K.Height * K.BitDepth / 8; >> compressed_btyes = K.FileSize; >> compression_ratio = image_bytes / compressed_bytes 数据类型。MA TLAB的数据类型包括: double 双精度浮点 uint8 无符号8位整数 uint16 无符号16位整数 uint32 无符号32位整数 int8 有符号8位整数 int16 有符号16位整数 int32 有符号32位整数 single 单精度 char 字符 logical 逻辑型(二值) 数据类型转换 B = data_class_name(A) 比如 >> C = [1.4 1.5] >> D = uint8(C) 图像类型分为: Intensity image 灰度图 Binary image 二值图 Indexed image 索引图 RGB image 彩色图 在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换

MATLAB自定义函数及局部变量

MATLAB自定义函数及局部变量 2009-11-20 09:17 在开始学习MATLAB的时候并没有发现这个软件有着这么强大的功能,随着课题的不断深入,也在逼迫着自己不断的去应用新的公式并开发新的算法,这就牵涉到了如何在MATLAB中自定义函数的问题,随之而来自然就是所有编程语言所面临的问题,函数调用、局部变量等等。下面就我自己整理的一些心得与大家交流。希望对你也有所帮助。 1、编写自定义函数时尽量分以下四部分: (1) 函数定义行:function[out1,out2,..]=filename(in1,in2,..),输入和输出参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。 (2) 第一行帮助行,以%开头,作为lookfor指令搜索的行 (3) 函数体说明及有关注解:以(%)开头,用以说明函数的作用及有关内容。如果不希望显示某段信息,可在它的前面加空行 (4) 函数体:函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。 例如下面就是一个标准的自字义函数。 function A=myhilb(n, m) % MYHILB 是一个示范性的 M-function. % A=MYHILB(N, M) 会生成一个N×M的Hilbert矩阵A. % A=MYHILB(N)会生成一个N×N的Hilbert矩阵. % MYHILB(N,M) 仅仅显示一个Hilbert矩阵,而不会返回任何矩阵。 %这些内容在用help时不会显示 if nargout>1, error('Too many output arguments.'); end if nargin==1, m=n; elseif nargin==0 | nargin>2 error('Wrong number of iutput arguments.');

matlab函数定义和调用问题

函数调用是使主程序简明清晰的重要工具,在很大程度上简化了程序的复杂程度,也方便于不同程序使用相同模块的调用。下面主要介绍: 函数文件+调用命令文件:需单独定义一个自定义函数的M文件 这种方法很简单,定义好输入输出就可以自由调用函数。 (1)定义函数 新建一个m文件在m文件里面第一行输入function [输出值]=(任何字母)(输入变量),输入变量和输出值个数不限,根据自己需要定义,接着定义你要实现的功能,最后保存这个m文件,注意:这个m文件的名字就是后面程序调用的名称,同时主程序和函数文件必须保存在同一个文件夹中,而且可以在函数中再嵌套其它函数。 (2)调用函数 [输出值]=函数保存的文件名(输入变量) 注意,如果输出值只有一个,可以不用中括号,如果两个以上就不必须使用,否则只输出第一个值,而且采用小括号会报错。 实例 编写一个解方程的程序: 2 例如求方程的根, +-= x x 2370 定义函数: function [x,y]=equal(a,b,c) d=b^2-4*a*c; x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); 文件保存为equal 主程序调用: [r1 r2]=myfunction(2,3,-7) 结果: r1 =1.2656 r2 = -2.7656

还是上面的例子,实现函数中调用函数: 定义函数1: function [testfun]=supple(j) testfun =j+5; 保存文件为supple(此处不一定要和函数名相同) 定义函数2: function [x,y]=equal(a,b,c) c=supple(c); %调用了一个函数 d=b^2-4*a*c; x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); 文件保存为equal 主程序调用: [r1 r2]=myfunction(2,3,-12) %(将c有-7改为-12) 结果: r1 =1.2656 r2 = -2.7656 %计算结果相同,说明函数中调用函数成功。 下面是其它几种常用的函数定义和调用方法: 1、函数文件+调用函数文件:定义多个M文件: % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t); fprintf(‘%4d^(1/3)=%6.4f\n’,t,y);

(完整版)Matlab主要函数使用方法

Matlab主要函数使用方法 ndims(A)用ndims命令常看矩阵的维数 1. matlab中mod的用法 简单的说mod(a,b)就是求的是a除以b的余数。比方说mod(100,3)=1,mod(17,6)=5 Examples mod(13,5) ans = 3 mod([1:5],3) ans = 1 2 0 1 2 mod(magic(3),3) ans = 2 1 0 0 2 1 1 0 2 2. 关于Matlab中size()的问题 size按照下面的形式使用: [m,n]=size(a,x)。一般的,函数的输入参量x不是用,这是当只有一个输出变量时,size返回一个行向量,第一个数为行数,第二个数为列数;如果有两个输出变量,第一个返回量为行数,第二个返回数为列数。当使用x时,x=1返回行数,x=2返回列数,这时只有一个返回值。 我要问的是: I=im2double(imread(file)) ;//把图像数组转换成double精度类型; if(size(I,3) > 1) I = rgb2gray( I ) ;

end 中size(I,3) 代表什么意思?按照上面的说法X=1,2都可以理解。 I 代表的是图像数组阿,不是二维的么?那么size(I,3) 中的3 代表什么? 一个函数可以是多维的..比如说是一个10*10*10*10的距阵 那就是说这个距阵是4维的.. 那个'()'里的3就是指的第三维 3.r = corr2(A,B) 计算两个矩阵的二维相关系数. 4.matlab中imshow显示问题 各位好,将一幅灰度图像经过小波变换后,数据变成double型,对变换后的图像进行显示时,设变换后的图像为y,为何用imshow(uint8(y))和imshow(y,[])时的图像显示结果不同呢?请问该如何正确显示变换后的图像呢?着急解决,请各位xdjm帮帮忙吧! 回答: imshow(uint8(y))是按照256级灰度显示y得绝对数据。0表示0,255表示255,大于255得都是255。imshow(y,[]),将y得最小值看作0,最大值看作255。 所以两者不同。 小波变换得图像应该用第二种显示,把数据scale一下。 5.matlab中用imshow显示图像由于数组类型产生的错误 今天在用MATLAB写程序的时候遇到个问题,以前一直没有注意到,刚才检查的时候才发现。 我们先来看段不复杂的程序 %定义常量 size=256; block=8; I_w=zeros(size); %读入原始图像和水印图像并显示 I=imread('lena.bmp'); W=imread('watermark.bmp');

自定义的函数用matlab绘图方法

matlab 画图中线型及颜色设置 (2010-04-06 11:18:29) MATLAB 受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图功能.本章主要介绍 2 维图形对象的生成函数及图形控制函数的使用方法,还将 简单地介绍一些图形的修饰与标注函数及操作和控制 MATLAB 各种图形对象的方法. 第一节 图形窗口与坐标系一.图形窗口 1.MATLAB 在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸. 2. 在 MATLAB 下,每一个图形窗口有唯一的一个序号 h,称为该图形窗口的句柄.MATLAB 通过管理图形窗口的句柄来管理图形窗口; 3.当前窗口句柄可以由 MATLAB 函数 gcf 获得; 4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口); figure(h)----将句柄为 h 的窗口设置为当前窗口; 5.打开图形窗口的方法有三种: 1)调用绘图函数时自动打开; 2)用 File---New---Figure 新建; 3)figure 命令打开,close 命令关闭. 在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已 打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗 口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形. 6.窗口中的图形打印:用图形窗口的 File 菜单中的 Print 项. 7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的 Edit 菜 单中选择 Properties 项,打开图形对象的参数设置窗口,可以设置对象的属性. 二.坐标系 1.一个图形必须有其定位系统,即坐标系; 2.在一个图形 窗口中可以有多个坐标系,但只有一个当前的坐标系; 3.每个坐标系都有唯一的标识符,即句柄值; 4.当前坐标系句柄可以由 MATLAB 函数 gca 获得; 5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h) h 为指定坐标系句柄值. 6.一些有关坐标轴的函数: 1)定义坐标范围:一般 MATLAB 自动定义坐标范围,如用户认为设定的不合适,可用 可用:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定来重新设定; 可用 29 2) 坐标轴控制:MATLAB 的缺省方式是在绘图时,将所在的坐标系也画出来,为隐去坐标系,可用 axis off;axis on 则显示坐标轴可用 (缺省值). 3)通常 MATLAB 的坐标系是长方形,长宽比例大约是 4:3,为了得到一个正方形的坐标系可用:axis square 4)坐标系横纵轴的比例是自动设置的,比例可能不一样,要得到相同比例的坐标系,可用:axis equal 第二节二维图形的绘制一. plot 函数 plot 函数是最基本的绘图函数,其基本的调用格式为: 1.plot(y)------绘制向量 y 对应于其元素序数的二维曲线图, 如果 y 为复数向量, 则绘制虚部对于实部的二维曲线图. 例:绘制单矢量曲线图. y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 由于 y 矢量有 10 个元素,x 坐标自动定义为[13 4 5 6 7 8 9 10].图形为: 12345678910 0 2 4 6 8 10 12 14 16 18 20 2.plot(x,y)------ 绘制由 x,y 所确定的曲线. 1)x,y 是两组向量,且它们的长度相等,则 plot(x,y)可以直观地绘出以 x 为横坐标,y 为纵坐标的图形. 如:画正弦曲线: t=0:0.1:2*pi; y=sin(t); plot(t,y) 2)当 plot(x,y)中,x 是向量,y 是矩阵时,则绘制 y 矩阵中各行或列对应于 30 向量 x 的曲线.如果 y 阵中行的长度与 x 向量的长度相同,则以 y 的行数据作为一组绘图数据;如果 y 阵中列的长度与 x 向量的长度相同,则以 y 的列数据作为一组绘图数据;如果 y 阵中行, 列均与 x 向量的长度相同,则以 y 的每列数据作为一组绘图数据. 例:下面的程序可同时绘出三条曲线.MATLAB 在绘制多条曲线时,会按照一定的规律自动变化每条曲线的的颜色. x=0:pi/50:2*pi; y(1,:)=sin(x); y(2,:)=0.6*sin(x); y(2,:)=0.3*sin(x); plot(x,y) 或者还可以这样用: x=0:pi/50:2*pi; y=[ sin(x); 0.6*sin(x); 0.3*sin(x)]; plot(x,y) 01234567 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 3) 如果 x,y 是同样大小的矩阵,则 plot(x,y)绘出 y 中各列相应于 x 中各列的图形. 例:x(1,:)=0:pi/50:2*pi; x(2,:)=pi/4:pi/50:2*pi+pi/4; x(3,:)=pi/2:pi/50:2*pi+pi/2; y(1,:)=sin(x(1,:)); y(2,:)=0.6*sin(x(2,:)); y(3,:)=0.3*sin(x(3,:)); plot(x,y) x=x'; y=y'; figure 31 plot(x,y) 在这个例子中,x------ 3x101,y------3x101,所以第一个 plot 按列画出 101 条曲线,每条 3 个点;而 x'------101x3,y'------

相关文档
最新文档