MATLAB代码大全
matlab命令大全 全面

分类:VC MatlabA aabs 绝对值、模、字符的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 bbar 二维直方图bar3 三维直方图bar3h 三维水平直方图barh 二维水平直方图base2dec X进制转换为十进制bin2dec 二进制转换为十进制blanks 创建空格串bone 蓝色调黑白色图阵box 框状坐标轴break while 或for 环中断指令brighten 亮度控制C ccapture (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 等位线填色等位线contourfcontour3 三维等位线contourslice 四维切片等位线图conv 多项式乘、卷积cool 青紫调冷色图copper 古铜调色图cos 余弦cosh 双曲余弦cot 余切coth 双曲余切cplxpair 复数共轭成对排列csc 余割csch 双曲余割cumsum 元素累计和cumtrapz 累计梯形积分cylinder 创建圆柱D ddblquad 二重数值积分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 eecho 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 ffactor 符号计算的因式分解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 ggamma 函数gammainc 不完全函数gammaln 函数的对数gca 获得当前轴句柄gcbo 获得正执行回调的对象句柄gcf 获得当前图对象句柄gco 获得当前对象句柄geomean 几何平均值get 获知对象属性getfield 获知构架数组的域getframe 获取影片的帧画面ginput 从图形窗获取数据global 定义全局变量gplot 依图论法则画图gradient 近似梯度gray 黑白灰度grid 画分格线griddata 规则化数据和曲面拟合gtext 由鼠标放置注释文字guide 启动图形用户界面交互设计工具H hharmmean 调和平均值help 在线帮助helpwin 交互式在线帮助helpdesk 打开超文本形式用户指南hex2dec 十六进制转换为十进制hex2num 十六进制转换为浮点数hidden 透视和消隐开关hilb Hilbert矩阵hist 频数计算或频数直方图histc 端点定位频数直方图histfit 带正态拟合的频数直方图hold 当前图上重画的切换开关horner 分解成嵌套形式hot 黑红黄白色图饱和色图hsvI iif-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 kjacobian 符号计算中求Jacobian 矩阵jet 蓝头红尾饱和色jordan 符号计算中获得Jordan标准型keyboard 键盘获得控制权kron Kronecker乘法规则产生的数组L llaplace Laplace变换lasterr 显示最新出错信息lastwarn 显示最新警告信息leastsq 解非线性最小二乘问题(旧版)legend 图形图例lighting 照明模式line 创建线对象lines 采用plot 画线色linmod 获连续系统的线性化模型linmod2 获连续系统的线性化精良模型linspace 线性等分向量ln 矩阵自然对数load 从MAT文件读取变量自然对数loglog10 常用对数log2 底为2的对数loglog 双对数刻度图形logm 矩阵对数logspace 对数分度向量lookfor 按关键字搜索M文件lower 转换为小写字母lsqnonlin 解非线性最小二乘问题lu LU分解M mmad 平均绝对值偏差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求数组维数ndimsNaN 非数(预定义)变量nargchk 输入宗量数验证nargin 函数输入宗量数nargout 函数输出宗量数ndgrid 产生高维格点矩阵newplot 准备新的缺省图、轴nextpow2 取最接近的较大2次幂nnz 矩阵的非零元素总数nonzeros 矩阵的非零元素norm 矩阵或向量范数normcdf 正态分布累计概率密度函数normest 估计矩阵2范数norminv 正态分布逆累计概率密度函数normpdf 正态分布概率密度函数normrnd 正态随机数发生器notebook 启动Matlab和Word的集成环境null 零空间num2str 把非整数数组转换为串numden 获取最小公分母和相应的分子表达式nzmax 指定存放非零元素所需内存O oode1 非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 ppack 收集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 qquad 低阶法计算数值积分quad8 高阶法计算数值积分(QUADL)quit 推出Matlab 环境quiver 二维方向箭头图quiver3 三维方向箭头图R rrand 产生均匀分布随机数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 指定的原点和方向旋转rotate3d 启动三维图形视角的交互设置功能round 向最近整数圆整rref 简化矩阵为梯形形式rsf2csf 实数块对角阵转为复数特征值对角阵rsums Riemann和S ssave 把内存变量保存为文件scatter3 三维散点图sec 正割sech 双曲正割semilogx X轴对数刻度坐标图semilogy Y轴对数刻度坐标图series 串联连接set 设置图形对象属性setfield 设置构架数组的域setstr 将ASCII码转换为字符的旧版指令sign 根据符号取值函数signum 符号计算中的符号取值函数sim 运行SIMULINK模型simget 获取SIMULINK模型设置的仿真参数simple 寻找最短形式的符号解simplify 符号计算中进行简化操作simset 对SIMULINK模型的仿真参数进行设置simulink 启动SIMULINK模块库浏览器sin 正弦sinh 双曲正弦size 矩阵的大小slice 立体切片图solve 求代数方程的符号解spalloc 为非零元素配置内存sparse 创建稀疏矩阵spconvert 把外部数据转换为稀疏矩阵spdiags 稀疏对角阵spfun 求非零元素的函数值sph2cart 球坐标变为直角坐标sphere 产生球面spinmap 色图彩色的周期变化spline 样条插值spones 用1置换非零元素sprandsym 稀疏随机对称阵sprank 结构秩spring 紫黄调春色图sprintf 把格式数据写成串spy 画稀疏结构图sqrt 平方根sqrtm 方根矩阵squeeze 删去大小为1的孤维sscanf 按指定格式读串stairs 阶梯图std 标准差step 阶跃响应指令str2double 串转换为双精度值str2mat 创建多行串数组str2num 串转换为数strcat 接成长串strcmp 串比较strjust 串对齐strmatch 搜索指定串strncmp 串中前若干字符比较strrep 串替换strtok 寻找第一间隔符前的内容struct 创建构架数组struct2cell 把构架转换为元胞数组strvcat 创建多行串数组sub2ind 多下标转换为单下标subexpr 通过子表达式重写符号对象subplot 创建子图subs 符号计算中的符号变量置换subspace 两子空间夹角sum 元素和summer 绿黄调夏色图superiorto 设定优先级surf 三维着色表面图surface 创建面对象surfc 带等位线的表面图surfl 带光照的三维表面图surfnorm 空间表面的法线svd 奇异值分解svds 求指定的若干奇异值switch-case-otherwise 多分支结构sym2poly 符号多项式转变为双精度多项式系数向量symmmd 对称最小度排序symrcm 反向Cuthill-McKee排序syms 创建多个符号对象T ttan 正切tanh 双曲正切taylortool 进行Taylor逼近分析的交互界面text 文字注释tf 创建传递函数对象启动计时器tictitle 图名toc 关闭计时器trapz 梯形法数值积分treelayout 展开树、林treeplot 画树图tril 下三角阵trim 求系统平衡点trimesh 不规则格点网线图trisurf 不规则格点表面图triu 上三角阵try-catch 控制流中的Try-catch结构type 显示M文件U uuicontextmenu 创建现场菜单uicontrol 创建用户控件uimenu 创建用户菜单unmkpp 逐段多项式数据的反明晰化unwrap 自然态相角upper 转换为大写字母V vvar 方差varargin 变长度输入宗量varargout 变长度输出宗量vectorize 使串表达式或内联函数适于数组运算ver 版本信息的获取view 三维图形的视角控制voronoi V oronoi多边形vpa 任意精度(符号类)数值W wwarning 显示警告信息what 列出当前目录上的文件whatsnew 显示Matlab中Readme文件的内容which 确定函数、文件的位置while 控制流中的While环结构white 全白色图矩阵whitebg 指定轴的背景色who 列出内存中的变量名whos 列出内存中变量的详细信息winter 蓝绿调冬色图启动内存浏览器workspaceX x , Y y , Z zxlabel X轴名xor 或非逻辑yesinput 智能输入指令ylabel Y轴名zeros 全零数组zlabel Z轴名zoom 图形的变焦放大和缩小ztrans 符号计算Z变换MATLAB命令大全管理命令和函在线帮助文hel装入超文本说do文件的目录列MEwhaM文列typ条目搜索关键lookfo通hel定位函数和文whic运行演示程Dem的搜索路MATLA控Path管理变量和工作空间列出当前变量Who列出当前变量(长表)Whos从磁盘文件中恢复变量Load保存工作空间变量Save从内存中清除变量和函数Clear整理工作空间内存Pack矩阵的尺寸Size向量的长度Length显示矩阵或disp与文件和操作系统有关的命改变当前工作目c目录列Di删除文Delet获取环境变量Geten操作系统命执DO操作系统命令并返回结Uni执UNI任保DiarMATLA控制命令窗设置命令行编Cedi 清命令窗Cl光标置左上Hom设置输出格Forma底稿文件内使用的回显命Ech在命令窗口中控制分页输morTLAM启动和退MATLA退Qui文时所执行Startu引MATLA文Matlabr主启一般信公司信MathworkMATLA系统信息Inf的订购用成MATLASubscribhostiMA TLA主服务程序的识别代Whatsne在说明书中未包含的新信Ve版本信操作符和特殊字矩阵乘*数组乘.矩阵数组.左除或反斜右除或斜数组.张量KroneckeKro冒圆括( 方括[ 小数父目.继逗分注感叹转置或引赋相= 关系操作< 逻辑逻辑逻辑逻辑异xo逻辑函检查变量或函数是否存Exis向量的任一元为真,则其值为An向量的所有元为真,则其值为All找出非零元素的索引Fin三角函正Si双曲正Sin反正Asi反双曲正AsinCo余Cos双曲余Aco反余Acos反双曲余Ta正Tan双曲正Ata反正Atan四象限反正Atan反双曲正Se正Sec双曲正Asech 反双曲正Cs余Csc双曲余Acs反余Acsc反双曲余Co余Cot双曲余Aco反余Acot反双曲余指数函指Ex自然对Log常用对Log1平方Sqr复数函绝对Ab相Argl复共Con复数虚Imag复数实Rea数值函朝零方向取Fi朝负无穷大方向取Floo朝正无穷大方向取Cei朝最近的整数取Roun除后取Re符号函Sig 基本矩零矩Zero”矩全One单位矩EyRan均匀分布的随机数矩Rand正态分布的随机数矩Logspac 对数间隔的向Meshgri三维图形数规则间隔的向特殊变量和常当前的答An相对浮点精Ep最大浮点Realma最小浮点Realmin圆周P虚数单I,无穷In非数Na浮点运算次Flop函数输入变量Nargi函数输出变量Nargou计算机类Compute算术标准时,其值为IsieeIEE当计算机采简明的答Wh版本VersioMATLA时间和日挂Cloc日Dat计时函Etim秒表开始计Ti计时函To时间(以秒为单位CputimCP矩阵操建立和提取对角Dia矩阵作左右翻Flipl矩阵作上下翻Flipu改变矩阵大Reshap矩阵旋9Rot9提取矩阵的下三角部Tri提取矩阵的上三角部Tri矩阵的索引号,重新排列矩友矩Compa矩HadamarHadamard矩HankeHanke矩HilHilber矩InvhilHilberKroKronecke张量Magi魔方矩ToeplitToeplit矩VandeVandermond矩矩阵分计算矩阵条件Con计算矩阵或向量范Nor逆条件值估Rcond Linpac 计算矩阵Ran计算矩阵行列式De计算矩阵的Trac零矩Nul正交Ort线性方线性方程求分CholeskCho高斯消元法求系数L矩阵求In分解正交三角矩阵分解QQ矩阵伪Pin特征值和奇异求特征值和特征向Ei求特征多项Pol形HessberHes广义特征Q变复对角矩阵为实分块对角形Cdf2rdf分SchuSchu矩阵均衡处理以提高特征值精Balanc奇异值分Svd矩阵函矩阵指Exp文实Expmexp 通过泰勒级数求矩阵指Expm通过特征值和特征向量求矩阵指Expm矩阵对Log矩阵开平方Sqrt 一般矩阵的计Fun泛函——非线性数值方低阶法求解常微分方Ode2低阶法求解常微分方程并绘出结果图Ode23高阶法求解常微分方Ode4低阶法计算数值积QuaQuad高阶法计算数值积Fmi 单变量函数的极小变Fmin多变量函数的极小Fzer找出单变量函数的零Fplo函数绘多项式函求多项式Root构造具有指定根的多项Pol带矩阵变量的多项式计Polyval部分分式展开(留数计算Residu数据的多项式拟Polyfi微分多项Polyde多项式乘Conv多项式除Decon建立和控制图形窗建立图Figur获取当前图形的句Gc清除当前图Cl关闭图Clos 建立和控制坐标在标定位置上建立坐标Subplo在任意位置上建立坐标Axe获取当前坐标系的句Gc清除当前坐标Cl控制坐标系的刻度和形Axi控制伪彩色坐标刻Caxi保持当前图Hol句柄图形对建立图形窗Figur建立坐标Axe建立曲Lin建立文本Tex建立图形填充Patc建立曲Surfac 建立图Imag建立用户界面控Uicontro建立用户界面菜Uime句柄图形操设置对Se获取对象特Ge重置对象特Rese删除对Delete文性质Newplo预nextplo获取当前对象的句Gc填充未完成绘图事Drawno寻找指定特征值的对Findob打印和存打印图形或保存图Prin配置本地打印机缺省Printop设置纸张取Orien屏幕抓取当前图Captur图基线性图Plo对数坐标图Loglo轴为对数坐标Semilog半对数坐标图形轴为对数坐标半对数坐标图形Semilog绘制二维多边形填充Fil图特极坐标Pola条形Ba离散序列图或杆Ste阶梯Stair误差条Errorba直方His角度直方Ros区域Compas箭头Feathe绘图函Fplo星点Come图形注图形标Title轴标Xlabe轴标Ylabe文本注Tex用鼠标放置文Gtex网格Gri编程语MATLA增加新的函Functio 表达式构成的字TLA执行EvaM执行由字串指定的函Feva定义全局变Globa程序控制条件执行语I命令配合使Elsi命令配合使Elseii语句的结EniFor,whil重复执行指定次数(循环Fo重复执行不定次数(循环Whil终止循环的执Brea返回引用的函Retur显示信息并终止函数的执Erro交互输提示用户输Inpu像底稿文件一样使用键盘输Keyboar产生由用户输入选择的菜Men等待用户响Paus建立用户界面菜Uimen建立用户界面控Uicontro一般字符串函中有关字符串函数的说MATLAStrings变字符串为数Ab变数值为字符Setst当变量为字符串时其值为Isst空Blank删除尾部的空Deblan 从各个字符串中形成文本矩Str2ma表达式组成的TLAEva执行M字符串比比较字符Strcm在一字符串中查找另一个子Findst变字符串为大Uppe变字符串为小Lowe当变量为字母时,其值为Islette当变量为空白字符时,其值为Isspac字符串与数值之间变变数值为字符Num2st变整数为字符Int2st变字符串为数Str2nu变数值为格式控制下的字符Sprint变字符串为格式控制下的数Sscan十进制与十六进制数之间变标准下的浮点变十六进制Hex2nuIEE变十六制数为十进制Hex2de变十进制数为十六进制Dec2he建追加系统动态特Appen变量状态作为输Augstat从方框图中构造状态空间系Blkbuild系统的闭Cloo方框图建Connec两个多项式的卷Con从增益矩阵中形成离散状态估计Desti从增益矩阵中形成离散控制器和估计Dre产生随机离散模Drmode从增益矩阵中形成连续状态估计Esti反馈系统连FeedbacOrd产生二阶系统近时延PadPad并行系统连Paralle从增益矩阵中形成连续控制器和估计Re产生随机连续模Rmode串行系统连Serie从模型中删除输入、输出或状Ssdelet 从大系统中选择子系ssselec模型变变连续系统为离散系C2利用指定方法变连续为离散系C2d 带一延时变连续为离散系C2d变离散为连续系D2利用指定方法变离散为连续系D2c变根值表示为多项式表Pol部分分式展Residu变状态空间表示为传递函数表Ss2t变状态空间表示为零极点表Ss2z变传递函数表示为状态空间表Tf2s变传递函数表示为零极点表Tf2z变零极点表示为传递函数表Zp2tf变零极点表示为状态空间表Zp2s模型简平衡实Balrea离散平衡实Dbalrea离散模型降Dmodre 最小实现和零极点对Minrea模型降Modre模型实正则形Cano可控阶梯Ctrb可观阶梯Obsv采用相似变Ss2s模型特相对于白噪声的连续协方差响Cova可控性矩Ctr阻尼系数和固有频Dam 连续稳态(直流)增Dcgai相对于白噪声的离散协方差响Dcova离散阻尼系数和固有频Ddam离散系统增Ddcgai离散可控性和可观Dgra按幅值排序离散特征Dsor特征值和特征向Ei按实部排列连续特征Esor可控性和可观Gra可观性矩Obs按格式显示系Printsy多项式之Root传递零Tzero利用随机扰动法传递零Tzero时域响离散时间单位冲激响Dimpuls离散时间零输入响Dinitia任意输入下的离散时间仿Dlsi离散时间阶跃响Dste变换仿Filte单输入单输冲激响Impuls连续时间零输入响Initia任意输入下的连续时间仿Lsi低级时间响应函Ltit阶跃响Ste阶跃函Stepfu频域响图(频域响应BodBod离DbodBod离DnicholNicholNyquisDnyquis离离散奇异值频域DsigmBodFbod连续系统的快拉普拉斯变换频率响Freq变换频率响FreqLtif低级频率响应函Prod 计算数组元素的连乘积。
matlab最简单最常用代码

绘图标注名称titile(‘标题’);xlabel(‘x轴’);设置坐标轴上下限axis([xmin xmax ymin ymax]);xmin,xmax指的x轴上下限,ymin,ymax指的y轴上下限。
网格线grid on;开启网格线set(gca,'xtick',[0:2:16]);网格线密度与xtick有关绘制函数图形fplot(‘表达式’,[范围])如fplot('sin(1/x)',[0,0.2],'m');曲线颜色默认蓝色b计算数据统计平均值data=load('E:\matlab\1\tes.txt');a=mean(data);a标准差C=[79 75.625 79 82.75 76.1 78.275 76.325 60.5 69.15 75.175 84.075 63.1 77.1625 76.5765 76.575 68.375];Std=std(C)矩阵矩阵的逆inv(A)函数三角函数sin(x):正弦函数cos(x):馀弦函数tan(x):正切函数asin(x):反正弦函数acos(x):反馀弦函数atan(x):反正切函数积分符号积分sysm x;int(f(x),x1,x2);数值积分fun=inline(9.025*10^(-5)*x^2+5.151*10^(-2)*x-2.628);%定义一个函数I=quad(fun,0,1945)拟合多项式拟合x=load('E:\matlab\1\x.txt');y=load('E:\matlab\1\y.txt');p4=polyfit(x,y,4);%四次多项式拟合x1=0:10:1900;y4=p4(1)*x1.^4+p4(2)*x1.^3+p4(3)*x1.^2+p4(4)*x1+p4(5);plot(x,y);hold on;plot(x1,y4);指定函数拟合%指定函数拟合,如y=m(3)*m(1).^x+m(2), m(1)和m(2)待定Date=[1,1.9;2,4.1;3,7.5;4,16.2;5,32.3];x=Date(:,1);y=Date(:,2);%当然也可以将x和y值分别保存在txt中,用load读入plot(x,y,'o');hold on;%绘制原有的点m0=[2 2 1]';%给定初值m=lsqnonlin('zhi',m0);%调用函数zhix=1:0.2:5;y=m(3)*m(1).^x+m(2);plot(x,y,'r');%绘制拟合曲线%存入单独的m文件中function f = zhi(m,Data)Date=[1,1.9;2,4.1;3,7.5;4,16.2;5,32.3];x=Date(:,1);y=Date(:,2);z=m(3)*m(1).^x+m(2);f=z-y;如果出现??? Error using ==> optim\private\snlslsqnonlin cannot continue: user function is returning Inf or NaN values. 说明初始参数估计严重错误。
MATLAB曲线曲面绘制代码大全

%plot3(x,y,z)用来绘制3维曲线图,而不能绘制曲面图!就是把所有的%(x,y,z)点连接在一起。
而画曲面图必须用surf和mesh函数,而这两个%函数都需要知道对应x,y向量交叉点内所有点处的z值,所以得用%x=-200:0.3:200;y=-200:0.1:200;%[X,Y]=meshgrid(x,y);%Z=X.*Y/sqrt(X.*X+Y.*Y)%获得z值,再用mesh(X, Y, Z);绘曲面图 ,下面为代码x=-200:0.3:200;y=-200:0.1:200;[X,Y]=meshgrid(x,y);Z=X.*Y./sqrt(X.*X+Y.*Y);mesh(X,Y,Z)%希望能解决你的问题!################################################################################ ###matlab画两曲面的交线悬赏分:100 - 解决时间:2009-10-4 19:37上半球面z.^2+y.^2+x.^2=1(z>=0) 与平面x+y+z=1.5的交线该怎么画出来?---------------------------[X,Y,Z]=sphere(50);Z(Z<0)=-(Z(Z<0));mesh(X,Y,Z)%画上半球面hold on;ezmesh('1.5-x-y',[-1 1])%画平面[x,y,z]=meshgrid(linspace(-1,1));contourslice(x,y,z,x+y+z-1.5,X,Y,Z,[0 0])%画交线axis equalview(135,20)################################################################################ ###两直线相交function [X,Y]=pll(X1,Y1,X2,Y2)% 直线相交求交点A1=Y1(1)-Y1(2);B1=X1(2)-X1(1);C1=Y1(2)*X1(1)-Y1(1)*X1(2);A2=Y2(1)-Y2(2);B2=X2(2)-X2(1);C2=Y2(2)*X2(1)-Y2(1)*X2(2);D=det([A1,B1;A2,B2]);X=det([-C1 B1;-C2 B2])/D;Y=det([A1 -C1;A2,-C2])/D;调用格式:x1=[1 5];y1=[1 5];x2=[1 5];y2=[5,1];[x,y]=pll(x1,y1,x2,y2);plot(x1,y1,'r');hold onplot(x2,y2,'b');plot(x,y,'ko');%直线与多条直线相交xi=[1 2 3 4 5];yi=[2 6 3 6 1];plot(xi,yi);hold onx1=[1 5];y1=[4 5];line(x1,y1);x=zeros(size(xi));y=x;for i=1:5-1x2=xi([i i+1]);y2=yi([i i+1]);[x,y]=pll(x1,y1,x2,y2);plot(x,y,'ro')end%直线与曲线相交x=-8:0.1:8;y=x;[X,Y]=meshgrid(x,y);R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;contour(Z,3);hold onc=contour(Z,3);x=[0 360];y=[0 400];y=(y(2)-y(1))/(x(2)-x(1))*(x-x(1))+y(1);z=[0 0];line(x,y,z);c=c';X=c(:,1);Y=c(:,2);r0=abs(Y-(y(2)-y(1))/(x(2)-x(1))*(X-x(1))+y(1))<=.93; zz=0;yy=r0.*Y;xx=r0.*X;plot(xx(r0~=0),yy(r0~=0),'r')%曲线与曲线相交x=0:pi/400:2*pi;x=x';y1=sin(pi*x);y2=cos(pi*x);plot(x,y1,x,y2);hold onr0=abs(y2-sin(pi*x))<=0.02;yy=r0.*y1;xx=r0.*x;plot(xx(r0~=0),yy(r0~=0),'r.')直线与曲面相交x=-8:0.3:8;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;mesh(X,Y,Z);hold onx=[-10 10];y=[-10 3];z=[30 35];line(x,y,z);r0=(abs(Y-y(1)-(y(2)-y(1))/(x(2)-x(1))*(X-x(1)))<=0.45)&... (abs(Z-z(1)-(z(2)-z(1))/(x(2)-x(1))*(X-x(1)))<0.45)&... (abs(Y-y(1)-(y(2)-y(1))/(z(2)-z(1))*(Z-z(1)))<=0.45);zz=r0.*Z;yy=r0.*Y;xx=r0.*X;plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'r*')平面与曲面相交x=-8:0.1:8;y=x;[X,Y]=meshgrid(x,y);Z1=2*ones(size(X));Z2=X.^2-Y.^2;mesh(X,Y,Z1);hold onmesh(X,Y,Z2);r0=(abs(Z1-Z2)<=.65);zz=r0.*Z1;yy=r0.*Y;xx=r0.*X;plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'k*')clcdisp('观察曲面后,按任意键画交线');pauseclfplot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),'k*');%曲面与多个截平面相交y=-10:0.5:10;z=y;[Z,Y]=meshgrid(z,y);X=Z;X1=0*ones(size(Z));X2=3*ones(size(Z));X3=-3*ones(size(Z));Z4=(X.^2-Y.^2)/10;mesh(X1,Y,Z);hold onmesh(X2,Y,Z)mesh(X3,Y,Z);mesh(X,Y,Z4);r1=(abs(X1-X)<0.05);r2=(abs(X2-X)<0.05);r3=(abs(X3-X)<0.05);zz1=r1.*Z4;yy1=r1.*Y;xx1=r1.*X;zz2=r2.*Z4;yy2=r1.*Y;xx2=r1.*X;zz3=r3.*Z4;yy3=r1.*Y;xx3=r1.*X;plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),'k*'); plot3(xx2(r2~=0),yy2(r2~=0),zz2(r2~=0),'k*'); plot3(xx3(r3~=0),yy3(r3~=0),zz3(r3~=0),'k*'); colormap(hsv)clc;disp('观察曲面后,按任意键画交线');hold off平面与曲面相交y=-8:0.4:8;z=y;[Z,Y]=meshgrid(z,y);X=Z;X1=zeros(size(Z));Z2=zeros(size(Z));Z3=(X.^2-Y.^2)/10;mesh(X1,Y,Z);hold onmesh(X,Y,Z2);mesh(X,Y,Z3);r1=(abs(X1-X)<0.05);r2=(abs(Z3-Z2)<0.05);r3=(abs(X1-X)<0.05)&(abs(Z-Z2)<=0.05);zz1=r1.*Z3;yy1=r1.*Y;xx1=r1.*X;zz2=r2.*Z3;yy2=r2.*Y;xx2=r2.*X;zz3=r3.*Z;yy1=r3.*Y;xx1=r3.*X1;plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),'k*'); plot3(xx2(r2~=0),yy2(r2~=0),zz2(r2~=0),'k*'); plot3(xx3(r3~=0),yy3(r3~=0),zz3(r3~=0),'k*');colormap(hsv);。
边缘提取和边缘检测matlab程序代码大全

附录Part1:对cameraman原始图像处理的仿真程序:clcclear allclose allA = imread('cameraman.bmp'); % 读入图像subplot(2,4,1);imshow(A);title('原图');x_mask = [1 0;0 -1]; % 建立X方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,2);imshow(BW); % 显示分割后的图像即边缘图像title('Roberts');y_mask = [-1 -2 -1;0 0 0;1 2 1];x_mask = y_mask';I = im2double(A);dx = imfilter(I, x_mask);dy = imfilter(I, y_mask);grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad);level = graythresh(grad);BW = im2bw(grad,level);subplot(2,4,3);imshow(BW); % 显示分割后的图像即边缘图像title('Sobel');y_mask = [-1 -1 -1;0 0 0;1 1 1];x_mask = y_mask';dx = imfilter(I, x_mask);dy = imfilter(I, y_mask);grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad);level = graythresh(grad);BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,4);imshow(BW); % 显示分割后的图像即边缘图像title('Prewitt');mask=[0,-1,0;-1,4,-1;0,-1,0]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,5);imshow(BW); % 显示分割后的图像,即梯度图像title('Laplacian');mask=[0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58);subplot(2,4,6);imshow(BW); % 显示分割后的图像,即梯度图像title('log');BW1 = edge(I,'canny'); % 调用canny函数subplot(2,4,7);imshow(BW1); % 显示分割后的图像,即梯度图像title('Canny');mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板mask2=[-2 -1 0;-1 0 1;0 1 2];mask3=[-1 0 1;-2 0 2;-1 0 1];mask4=[0 1 2;-1 0 1;-2 -1 0];mask5=[1 2 1;0 0 0;-1 -2 -1];mask6=[2 1 0;1 0 -1;0 -1 -2];mask7=[1 0 -1;2 0 -2;1 0 -1];mask8=[0 -1 -2;1 0 -1;2 1 0];d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3));dd = max(dd,abs(d4));dd = max(dd,abs(d5));dd = max(dd,abs(d6));dd = max(dd,abs(d7));dd = max(dd,abs(d8));grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像BB = grad;FW=median(BB(:))/0.6745;B = BB.*BB;B = sum(B(:));FX= sqrt(B/256^2);FS=sqrt(max(FX^2-FW^2,0));T=sqrt(2)*FW^2/FS; % 计算最佳阈值grad = mat2gray(BB);BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);imshow(BW2); % 显示分割后的图像,即边缘图像title('sobel改进算子');Part2加入高斯噪声后的cameraman仿真程序:clcclear allclose allA = imread('cameraman.bmp'); % 读入图像V=0.009;X=imnoise(A,'gaussian',0,V);subplot(2,4,1);imshow(X);%添加均值为0、方差0.09的高斯噪声x_mask = [1 0;0 -1]; % 创建X方向的模板y_mask = rot90(x_mask); % 创建Y方向的模板I = im2double(X); % 图像数据双精度转化dx = imfilter(I, x_mask); % X方向的梯度分量的计算dy = imfilter(I, y_mask); % Y方向的梯度分量的计算grad = sqrt(dx.*dx + dy.*dy); % 梯度计算grad = mat2gray(grad); % 梯度矩阵转换成灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 使用阈值分割梯度图像subplot(2,4,2);imshow(BW); % 显示分割后的图像即边缘图像title('Roberts');y_mask = [-1 -2 -1;0 0 0;1 2 1];x_mask = y_mask';dx = imfilter(I, x_mask);dy = imfilter(I, y_mask);grad = sqrt(dx.*dx + dy.*dy);grad = mat2gray(grad); % 梯度矩阵转为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,3);imshow(BW); % 显示分割后的图像即边缘图像title('Sobel');y_mask = [-1 -1 -1;0 0 0;1 1 1];x_mask = y_mask';dx = imfilter(I, x_mask);dy = imfilter(I, y_mask);grad = sqrt(dx.*dx + dy.*dy);grad = mat2gray(grad);level = graythresh(grad);BW = im2bw(grad,level);subplot(2,4,4);imshow(BW); % 显示分割后的图像即边缘图像title('Prewitt');mask=[0,-1,0;-1,4,-1;0,-1,0]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,5);imshow(BW); % 显示分割后的图像,即梯度图像title('Laplacian');mask=[0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0]; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,6);imshow(BW); % 显示分割后的图像,即梯度图像title('log');BW1 = edge(I,'canny'); % 调用canny函数subplot(2,4,7);imshow(BW1); % 显示分割后的图像,即梯度图像title('Canny');mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板mask2=[-2 -1 0;-1 0 1;0 1 2];mask3=[-1 0 1;-2 0 2;-1 0 1];mask4=[0 1 2;-1 0 1;-2 -1 0];mask5=[1 2 1;0 0 0;-1 -2 -1];mask6=[2 1 0;1 0 -1;0 -1 -2];mask7=[1 0 -1;2 0 -2;1 0 -1];mask8=[0 -1 -2;1 0 -1;2 1 0];d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3));dd = max(dd,abs(d4));dd = max(dd,abs(d5));dd = max(dd,abs(d6));dd = max(dd,abs(d7));dd = max(dd,abs(d8));grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像BB = grad;FW=median(BB(:))/0.6745;B = BB.*BB;B = sum(B(:));FX= sqrt(B/256^2);FS=sqrt(max(FX^2-FW^2,0));T=sqrt(2)*FW^2/FS; % 计算最佳阈值grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);imshow(BW2); % 显示分割后的图像,即边缘图像title('sobel改进算子');加入椒盐噪声的边缘检测程序:function jingdianI=imread('lenna.bmp');I1=imnoise(I,'salt & pepper');%添加椒盐噪声,默认值为0.02 figure,imshow(I1);%添加均值为0、方差0.002的高斯噪声title('添加椒盐噪声后原图')B1=edge(I1,'roberts');B2=edge(I1,'sobel');B3=edge(I1,'prewitt');B4=edge(I1,'canny');B5=edge(I1,'log');subplot(2,3,1);imshow(B1);title('roberts算子检测');subplot(2,3,2);imshow(B2);title('sobel算子检测');subplot(2,3,3);imshow(B3);title('prewitt算子检测');subplot(2,3,4);imshow(B4);title('canny算子检测');subplot(2,3,5)imshow(B5);title('log算子检测');B1=edge(I1,'roberts');%调用roberts算子检测图像B2=edge(I1,'sobel');%调用soble算子进行边缘检测B3=edge(I1,'prewitt');%调用prewitt算子进行边缘检测B4=edge(I1,'canny');%调用canny算子对图像进行边缘检测B5=edge(I1,'log');%调用log算子对图像进行边缘检测subplot(2,3,1);%设置图像布局imshow(B1);title('roberts算子检测');%现实图像并命名为roberts算子检测subplot(2,3,2);imshow(B2);title('sobel算子检测');subplot(2,3,3);imshow(B3);title('prewitt算子检测');subplot(2,3,4);imshow(B4);title('canny算子检测');subplot(2,3,5)imshow(B5);title('log算子检测');mask1=[-1 -2 -1;0 0 0;1 2 1]; % 建立方向模板mask2=[-2 -1 0;-1 0 1;0 1 2];mask3=[-1 0 1;-2 0 2;-1 0 1];mask4=[0 1 2;-1 0 1;-2 -1 0];mask5=[1 2 1;0 0 0;-1 -2 -1];mask6=[2 1 0;1 0 -1;0 -1 -2];mask7=[1 0 -1;2 0 -2;1 0 -1];mask8=[0 -1 -2;1 0 -1;2 1 0];I = im2double(I1); % 将数据图像转化为双精度d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2)); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3));dd = max(dd,abs(d4));dd = max(dd,abs(d5));dd = max(dd,abs(d6));dd = max(dd,abs(d7));dd = max(dd,abs(d8));grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像BB = grad;FW=median(BB(:))/0.6745;B = BB.*BB;B = sum(B(:));FX= sqrt(B/256^2);FS=sqrt(max(FX^2-FW^2,0));T=sqrt(2)*FW^2/FS; % 计算最佳阈值grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,3,6);imshow(BW2); % 显示分割后的图像,即边缘图像title('加入椒盐噪声的sobel改进算子');。
matlab的编码大全

s2='Shannon编码平均码字长度L:';
s3='Shannon编码的编码效率q:';
disp(s0);
disp(s1),disp(B),disp(W);
disp(s2),disp(L);
disp(s3),disp(q);
附录D Fano编码
%函数说明:%
function [W,L,q]=fano(P)
%提示错误信息
if (length(find(P<=0))~=0)
error('Not a prob.vector,negative component'); %判断是否符合概率分布条件
d
if (abs(sum(P)-1)>10e-10)
error('Not a prob.vector,component do not add up to 1') %判断是否符合概率和为1
n=length(current_P);
add(1)=current_P(1);
% 1)求概率的依次累加和
for i=2:n
add(i)=0;
add(i)=add(i-1)+current_P(i);
end
% 2)求概率和最接近的两小组
s=add(n);
for i=1:n
temp(i)=abs(s-2*add(i));
H=entropy(P,2); %计算信源熵
q=H/L; %计算编码效率
%打印输出结果
for i=1:n
B{i}=i;
end
[n,m]=size(W);
matlab 变量、矩阵基本运算代码

matlab 变量、矩阵基本运算代码详解
MATLAB是一种高效的编程语言和环境,主要用于数值计算和数据分析。
它支持多种数据类型,其中矩阵是最基本的数据结构之一。
下面是一些关于MATLAB变量和矩阵基本运算的代码示例。
1.变量定义
在MATLAB中,变量不需要提前声明,可以直接赋值。
例如:
2.矩阵基本运算
MATLAB支持多种矩阵基本运算,包括加法、减法、乘法和转置等。
例如:
注意,在MATLAB中,矩阵乘法需要用*符号表示,而不是普通的乘号x。
此外,MATLAB还支持一些特殊的矩阵运算,例如逆矩阵、行列式和特征值等。
例如:
3.变量替换和循环结构
MATLAB还支持变量替换和循环结构,可以方便地进行批量计算和数据处理。
例如:
以上是一些关于MATLAB变量和矩阵基本运算的代码示例,希望能对您有所帮助。
一、MATLAB之基础入门代码
⼀、MATLAB之基础⼊门代码序⾔本篇旨在列出matlab⼊门及在科研中必须掌握的⼀些基础代码,主要内容包括:matkab矩阵运算、绘图、函数流程控制、⽂件、图像、函数等基本操作,以便于随查随⽤,⾄于常⽤的算法本篇鲜有涉及。
%% matlab总述% matlab中基本数据结构是矩阵,即使单独⼀个数也视为⼀个1*1的矩阵%%%% 矩阵创建&赋值操作a=5;b=[1 2 3];c=[1;2;3];d=[1 2 3;4 5 6;7 8 9];x=[0:0.5:2]; % 0.5是步长x=zeros(4); % 4*4零矩阵x=zeros(2,3);% 2*3零矩阵x=ones(5,5); % 1矩阵x=eye(5); % 5阶单位阵,与Octave语法完全⼀致[r,c]=size(x); % 返回x矩阵的⼤⼩x=linspace(0,3,5); % 0到3间均匀⽣成5个点,⽣成函数的采样点[x,y,z]=meshgrid([],[],[]); % ⽤以⽣成函数的采样点%%%% matlab中的保留字piInf % ⽆穷⼤NaN % 未定式,0/0%%%% 数组计算a=a+b;a=a-b;% 数组加减a=b*c;a=b*inv(x)% 数组乘除 inversea=b.*c; % 对应位操作./ .* .^a=a';a=a(:);% 数组拉直%%%% 数组索引与操作% 括号是索引符号,如([],[])x=a(2,2);x=a(5);x=a(1:2,3:4); %([],[])x(x>72)=x(x>72)-72 % 数组的逻辑索引,x>72⾃⾝就是⼀个0/1⼆维数组,x(x>72)就是访问对应为1位置处的值% 数组赋值/改值a(2,2)=0a(5)=9a(1:2,3:4)=ones(2,2)a(1:2,[3,4,7,11])=ones(2,2) % matlab中[1:9],1:9是基本数据类型%%%% 数组的⽐较和逻辑运算,符合条件的同⼀位置为1,不符合则为0x=[1 2 3 4 5 6 7];y=[1 2 4 5 5 6 8];eq=(x==y); %上⾯说过了,x==y⾃⾝也是⼀个0/1⼆维数组eq=(x>2)&(y<5); % 与 &两边既可以是标量也可以是向量 VS. &&两边只能是标量eq=(x>2)|(y<5); % 或eq=xor(x>4,y<5); % 异或x(x<3)=-1; % (x<3)是⼀个0/1数组,x(x<3)就是把(x<3)数组中1对应位置的位置访问,再将访问到的位置赋值1,⽐较和逻辑运算与数组索引结合xy=[x,y]; xy=[x;y]; % ⽤已有数组构建新数组,数组融合img=cat(3,R,G,B); % ⾼级数组融合xy(:,xy(1,:)<4)=0 %逻辑运算结果矩阵也可以⽤来数组索引%%%% 数组操作函数x=[1 2 3;4 5 6;7 8 9];x=flipud(x);%上下转x=fliplr(x);%左右转x=rot90(x);%逆时针旋转90度x=pinv(x);%数组求(伪)逆sum(x,1); % x每列求和sum(x,2); % x每⾏求和sum(x(:)); % 求全和,:表⽰将数组拉直maxn=max(x);% 返回每列最⼤值maxn=max(x);% 返回每列最⼤值maxn=max(x(:)); % 返回全局最⼤值min(); % ⽤法同max()%%%% 常⽤数学函数% 注意matlab中矩阵是基本数据结构,因此所有函数都是对矩阵中每个x_i操作y=sin(x);y=abs(x);%绝对值y=sqrt(x);%开⽅y=ceil(x);%向上取整y=floor(x);%向上取整y=round(x);%四舍五⼊取整y=rand(r,c);%⽣成随机矩阵b=sum(a,idm);%求和函数,dim=1 表⽰对每⼀列求和,dim=2 表⽰对每⼀⾏求和tabulate(detect_result)% detect_result是⼀个列向量,该函数⽤以频数、频率统计%%%% MATLAB函数基本语句for i=1:2:100 %endwhile 1if a<1breakendendfunction [output1,]=functionname(input1,) % 函数定义command1command2output1=%%%% 基本绘图%plotx=0:0.001*pi:2*pi;y=sin(x);z=cos(x);plot(x,y,'-ob','LineWidth',1.5) % 标出数据点的折线图hold onplot(x,z,'rs') % 散点图drawnow % 动画图xlabel('x')ylabel('y')title('图')axis equal % 两轴单位长度相等axis([-2,2,-2,2]) % 控制坐标轴范围set(gca,'XTick',0:pi/2:4*pi); % 设置坐标轴刻度间距,⼀般与下⼀⾏命令搭配set(gca,'XTickLabel',{'0','0.5*pi','pi','1.5*pi','2*pi','2.5*pi','3*pi','3.5*pi','4*pi'})% 设置坐标轴刻度标号xlim([-2,2]) % 控制坐标轴范围text(0,0,'(0,0)') % 在数据曲线上点(x,y)处,标出'(3,5)'legend('cos(x)','sin(x)','sin(x)-cos(x)') % 依照绘图的顺序依次标注图例saveas(gcf,strcat('ch',num2str(i),'.emf')) % 保存plot图⽚,gcf是plot的句柄plot(X)%绘制⼆维矩阵,以⾏号为横坐标,各列为纵坐标plot(X);% plot制作动图for k=1:10plot (fft(eye(k+10))) % eye()单位阵,fft()傅⾥叶变换,plot()绘制矩阵axis equalM(k)=getframe; % 截取当前窗⼝作为影⽚帧endmovie(M,50) %播放多帧图⽚,M 50次%极坐标plar(theta,r,LineSpec)t=0:0.1:3*pi;polar(t,abs(cos(5*t)));% 快速⽅程绘图fplot('x-cos(x^2)',[-4,4]);% 绘制y=x-cos(x^2)ezplot('y-f(x),[-6 6 -8 8]');% ezplot('⽅程式',[xmin xmax ymin ymax])ezplot('cos(3*t)','sin(3*t)',[0:2*pi]);% ezplot('x参数式','y参数式',[tmin,tmax])%%%% 参数⽅程作图(可以画出很有趣的⾮函数图像)t=0:pi/50:2*pi;x=sin(t);y=cos(t);plot(x,y)axis([-1.1,1.1,-1.1,1.1])axis equal%%%%x=sin(t)y=cos(t)z=tplot3(x,y,z) % 三维曲线参数⽅程作图grid on % 开⽹格%%%%三维曲⾯[x,y]=meshgrid(-pi:0.1:pi); % 画函数采样点z=sin(x).*cos(y);mesh(x,y,z) % 画三维曲⾯figure() % 开新画板surf(x,y,z) % 画中间插值的三维曲⾯(有渲染效果)%%%% ⽂件数据读取% .txt纯数据⽂件⽂件data=load('c:\desktop\score.txt')% .txt⽂本⽂件fid=fopen('score.txt','r')line1=fgetl(fid)%数据按分割%数据类型转换line2=fgetl(fid)fclose(fid);fid=fopen('score.txt','w')fprintf(fid,'会当凌绝顶’)fprintf(fid,'%d⽉⼯资 %6.1f\n',[1,2,3,4;20000,19999,20010,25000,23000])fclose(fid);% excel⽂件data=xlsread('filename.xls','Sheet1','A3:C6');data(isnan(data))=0;%空位补零xlswrite('filename.xls',{'t','w'},'Sheet1','B1:C1')%图⽚⽂件img=imread('leave.jpg')% 图⽚读取image(img) % 图⽚显⽰lip(234:435,112:300,:)%图⽚切⽚imshow(lip) % 图⽚显⽰imwrite(img,'c:\\desktop\\figure.emf')% UI交互式导⼊图⽚[FileName PathName FilterIndex]=uigetfile({'*.jpg','*.bmf'},'请导⼊图⽚','*.jpg','MultiSelect','on') if ~ FilterIndexreturnend%视频⽂件data=VideoReader('sport.avi')% data是⼀结构体frame=read(data,25)% 读取视屏中的某⼀帧,即图⽚imshow(frame)% 对视频处理就是循环处理每⼀帧%%%% 线性⽅程求解、拟合、回归x=A\B%⼀元线性拟合x=[2.410 2.468 2.529 2.571 2.618 2.662 2.715 2.747 2.907 2.959 2.997];y=[0 0.800 1.695 2.290 2.965 3.595 4.365 4.810 7.125 7.890 8.425];a=polyfit(x,y,1)%⼀阶拟合 y=a1 x+ a2y=polyval(a,x) % 获得拟合表达式%⾃定义拟合p=fittype('a*x+b*sin(x)+c');% 指定拟合模型f=fit(x,y,p)% 获得拟合函数,x和y必须为列向量plot(f,x,y)% 画出拟合图%差值 x=[1:10] y=[1:10],线性回归求xi对应的yiyi=interp1(x,y,xi,'linear');%线性回归 y=f(x1,x2,x3)%%%%微分⽅程求解%解析解syms y(x);ode=diff(y,x)-y==0;init=y(0)==1;dsolve(ode,init)%dsolve('D2y+4*Dy+24*y=0','y(0)=0,Dy(0)=15','x')%尤克—库塔数值解%%% 符号对象的创建,matlab中之前都是数值计算,这⾥是符号运算a=sym([1/2 sqrt(5)]);y=sym('2*sin(x)*cos(x)');y=simple(y);syms x y;z=cos(x)*sin(y);% 符号表达式及函数的创建, matlab默认是数值运算,符号运算需要提前声明。
(完整word版)MatLab代码大全
第2章图像获取2.3.2 二维连续傅里叶变换例2.2figure(1); %建立图形窗口1[u,v] = meshgrid(-1:0.01:1); %生成二维频域网格F1 = abs(sinc(u.*pi));F2 = abs(sinc(v.*pi));F=F1.*F2; %计算幅度频谱F=|F(u,v)|surf(u,v,F); %显示幅度频谱,如图2.3(b)shading interp; %平滑三维曲面上的小格axis off; %关闭坐标系figure(2); %建立图形窗口2F1=histeq(F); %扩展F的对比度以增强视觉效果imshow(F1); %用图像来显示幅度频谱,如图2.3(c)第3章图像变换3.4.4 二维FFT的MATLAB实现例3.2 简单图像及其傅里叶变换MATLAB程序:%建立简单图像d并显示之d = zeros(32,32); %图像大小32⨯32d(13:20,13:20) = 1; %中心白色方块大小为8⨯8figure(1); %建立图形窗口1imshow(d,'notruesize');%显示图像d如图3.5(a)所示%计算傅里叶变换并显示之D = fft2(d); %计算图像d的傅里叶变换,fft2(d) = fft(fft(d).').'figure(2); %建立图形窗口2imshow(abs(D),[-1 5],'notruesize'); %显示图像d的傅里叶变换谱如3.5(b)所示例3.3 MATLAB图像及其傅里叶变换谱MATLAB程序:figure(1);load imdemos saturn2; %装入MA TLAB图像saturn2imshow(saturn2); %显示图像saturn2如图3.6(a)所示figure(2);S= fftshift(fft2(saturn2)); %计算傅里叶变换并移位imshow(log(abs(S)),[ ]); %显示傅里叶变换谱如3.6(b)所示例3.4 真彩图像及其傅里叶变换谱MATLAB程序:figure(1);A=imread('image1.jpg'); %装入真彩图像,见图1.1(b)B=rgb2gray(A); %将真彩图像转换为灰度图像imshow(B); %显示灰度图像如图3.7(a)所示C=fftshift(fft2(B)); %计算傅里叶变换并移位figure(2);imshow(log(abs(C)),[ ]); %显示傅里叶变换谱如3.7(b)所示3.5.4 离散余弦变换的MATLAB实现例3.5 计算并显示真彩图像余弦变换的MATLAB程序如下:RGB=imread('image2.jpg'); %装入真彩图像figure(1);imshow(RGB); %显示彩色图像GRAY=rgb2gray(RGB); %将真彩图像转换为灰度图像figure(2);imshow(GRAY); %显示灰度图像如图3.10(a)所示DCT=dct2(GRAY); %进行余弦变换figure(3);imshow(log(abs(DCT)),[ ]); %显示余弦变换如图3.10(b)所示。
matlab基础编程代码
matlab基础编程代码Matlab基础编程代码是指使用Matlab语言进行编程的基础知识和技巧。
本文将介绍Matlab编程的一些基础知识和常用代码示例。
一、Matlab基础知识1. Matlab是一种高级编程语言和环境,适用于科学计算、数据分析和可视化等领域。
2. Matlab的语法类似于其他编程语言,但具有独特的特性和函数库。
3. Matlab提供了丰富的数学和矩阵运算函数,使其在科学计算和数据分析中具有广泛的应用。
二、Matlab编程基础代码示例1. 变量和赋值在Matlab中,可以使用等号将值赋给变量。
例如,可以使用以下代码将值5赋给变量x:```matlabx = 5;```2. 数组和矩阵Matlab中的数组和矩阵是非常重要的数据结构。
可以使用以下代码创建一个数组或矩阵:```matlabA = [1, 2, 3; 4, 5, 6; 7, 8, 9];```上述代码创建了一个3x3的矩阵A,其中包含了1到9的数字。
3. 条件语句在Matlab中,可以使用条件语句控制程序的执行流程。
以下是一个简单的if语句示例:```matlabx = 5;if x > 0disp('x是正数');elsedisp('x是负数');end```上述代码根据变量x的值输出不同的结果。
4. 循环语句循环语句是Matlab编程中常用的控制结构。
以下是一个for循环的示例:```matlabfor i = 1:5disp(i);end```上述代码将输出数字1到5。
5. 函数定义和调用在Matlab中,可以使用函数来封装一段可重复使用的代码。
以下是一个函数定义和调用的示例:```matlabfunction result = square(x)result = x^2;endy = square(4);disp(y);```上述代码定义了一个计算平方的函数,并调用该函数计算4的平方并输出结果。
matlab经典代码大全
哈哈哈MATLAB显示正炫余炫图:plot(x,y1,'* r',x,y2,'o b')定义【0,2π】;t=0:pi/10:2*pi;定义函数文件:function [返回变量列表]=函数名(输入变量列表)顺序结构:选择结构1)if-else-end语句其格式为:if 逻辑表达式程序模块1;else程序模块2;End图片读取:%选择图片路径[filename, pathname] = ...uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');%合成路径+文件名str=[pathname,filename];%为什么pathname和filename要前面出现的位置相反才能运行呢???%读取图片im=imread(str);%使用图片axes(handles.axes1);%显示图片imshow(im);边缘检测:global imstr=get(hObject,'string');axes (handles.axes1);switch strcase ' 原图'imshow(im);case 'sobel'BW = edge(rgb2gray(im),'sobel');imshow(BW);case 'prewitt'BW = edge(rgb2gray(im),'prewitt');imshow(BW);case 'canny'BW = edge(rgb2gray(im),'canny');imshow(BW);Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案end;开闭运算:se=[1,1,1;1,1,1;1,1,1;1,1,1]; %Structuring ElementI=rgb2gray(im);imshow(I,[]);title('Original Image');I=double(I);[im_height,im_width]=size(I);[se_height,se_width]=size(se);halfheight=floor(se_height/2);halfwidth=floor(se_width/2);[se_origin]=floor((size(se)+1)/2);image_dilation=padarray(I,se_origin,0,'both'); %Image to be used for dilationimage_erosion=padarray(I,se_origin,256,'both'); %Image to be used for erosion %%%%%%%%%%%%%%%%%%%%% Dilation %%%%%%%%%%%%%%%%%%%%%for k=se_origin(1)+1:im_height+se_origin(1)for kk=se_origin(2)+1:im_width+se_origin(2)dilated_image(k-se_origin(1),kk-se_origin(2))=max(max(se+image_dilation(k-se_origin(1):k+halfh eight-1,kk-se_origin(2):kk+halfwidth-1)));endendfigure;imshow(dilated_image,[]);title('Image after Dilation'); %%%%%%%%%%%%%%%%%%%% Erosion %%%%%%%%%%%%%%%%%%%%se=se';for k=se_origin(2)+1:im_height+se_origin(2)for kk=se_origin(1)+1:im_width+se_origin(1)eroded_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion(k-se_origin(2):k+halfwidth -1,kk-se_origin(1):kk+halfheight-1)-se));endendfigure;imshow(eroded_image,[]);title('Image after Erosion'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Opening(Erosion first, then Dilation) %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%se=se';image_dilation2=eroded_image; %Image to be used for dilationfor k=se_origin(1)+1:im_height-se_origin(1)for kk=se_origin(2)+1:im_width-se_origin(2)opening_image(k-se_origin(1),kk-se_origin(2))=max(max(se+image_dilation2(k-se_origin(1):k+hal fheight-1,kk-se_origin(2):kk+halfwidth-1)));endendfigure;imshow(opening_image,[]);title('Opening Image'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Closing(Dilation first, then Erosion) %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%se=se';image_erosion2=dilated_image; %Image to be used for erosionfor k=se_origin(2)+1:im_height-se_origin(2)for kk=se_origin(1)+1:im_width-se_origin(1)closing_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion2(k-se_origin(2):k+halfwidt h-1,kk-se_origin(1):kk+halfheight-1)-se));endendfigure;imshow(closing_image,[]);title('Closing Image');Warning: Image is too big to fit on screen; displaying at 31% scale.> In truesize>Resize1 at 308In truesize at 44In imshow at 161图像的直方图归一化:I=imread(‘red.bmp’);%读入图像figure;%打开新窗口[M,N]=size(I);%计算图像大小[counts,x]=imhist(I,32);%计算有32个小区间的灰度直方图counts=counts/M/N;%计算归一化灰度直方图各区间的值stem(x,counts);%绘制归一化直方图图像平移:I=imread('shuichi.jpg');se=translate(strel(1),[180 190]);B=imdilate(I,se);figure;subplot(1,2,1),subimage(I);title('原图像');subplot(1,2,2),subimage(B);title('平移后图像');图像的转置;A=imread('nir.bmp');tform=maketform('affine',[0 1 0;1 0 0;0 0 1]);B=imtransform(A,tform,'nearest');figure;imshow(A);figure;imshow(B);imwrite(B,'nir转置后图像.bmp');图像滤波:B = imfilter(A,H,option1,option2,...)或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options)其中,f为输入图像,w为滤波掩模,g为滤波后图像。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
subplot(233),imshow(k1);title('3×3 模板中值滤波') subplot(234),imshow(k2);title('5×5 模板中值滤波') subplot(235),imshow(k3);title('7×7 模板中值滤波') subplot(236),imshow(k4);title('9×9 模板中值滤波')
12
I=imread('circuit.tif'); [M,N]=size(I); for i=1:8:257 counts(i)= i; end Q=imread('circuit.tif'); N=histeq(Q,counts); figure subplot(221);imshow(N); subplot(222);imhist(N); axis([0 260 0 5000]); 4.2.3 图像间运算 例:用图像平均减少随机噪声
例 4.10:使用中值滤波降低图像噪声
I=imread('eight.tif'); J=imnoise(I,'salt & pepper', 0.02); subplot(231),imshow(I);title('原图像'); subplot(232),imshow(J);title('添加椒盐噪声图像') k1=medfilt2(J); %进行 3×3 模板中值滤波 k2=medfilt2(J,[5 5]); %进行 5×5 模板中值滤波 k3=medfilt2(J,[7 7]); %进行 7×7 模板中值滤波 k4=medfilt2(J,[9 9]); %进行 9×9 模板中值滤波
第2章
图像获取
8
2.3.2 二维连续傅里叶变换
例2.2 figure(1); [u,v] = meshgrid(-1:0.01:1); F1 = abs(sinc(u.*pi)); F2 = abs(sinc(v.*pi)); F=F1.*F2; surf(u,v,F); shading interp; axis off; figure(2); F1=histeq(F); imshow(F1); %建立图形窗口 1 %生成二维频域网格
11
end end I=uint8(I); figure;imshow(I);
if I(i,j)<=50 I(i,j)=40; elseif I(i,j)<=180 I(i,j)=220; else I(i,j)=40; end
例 4.4 具体 Matlab 程序如下: I=imread('lena.bmp'); imshow(I); I=double(I); [M,N]=size(I); for k=1:8 J=zeros(M,N); for i=1:M for j=1:N temp=I(i,j); s1=0;s2=0; range=[k:-1:1]; for d=range s1=2^(8-d)+s1;s2=2^(8-d+1); if temp>=s1 & temp<s2; J(i,j)=255; break; end end end end J=uint8(J); figure;imshow(J); end 4.2.2 直方图修正 例 4.6 直方图均衡化效果实例 用 Matlab 中的 histeq 函数实现直方图均衡化的程序如下: I=imread('circuit.tif'); figure subplot(221);imshow(I); subplot(222);imhist(I) I1=histeq(I); figure; subplot(221);imshow(I1) subplot(222);imhist(I1) 例 4.8:直方图规定效果实例 用 matlab 中的 histeq 函数实现直方图均衡化的程序如下:
例3.5 计算并显示真彩图像余弦变换的MATLAB程序如下: RGB=imread('image2.jpg'); figure(1); imshow(RGB); GRAY=rgb2gray(RGB); figure(2); imshow(GRAY); DCT=dct2(GRAY); figure(3); imshow(log(abs(DCT)),[ ]); %装入真彩图像 %显示彩色图像 %将真彩图像转换为灰度图像 %显示灰度图像如图 3.10(a)所示 %进行余弦变换 %显示余弦变换如图 3.10(b)所示。
%装入MATLAB图像saturn2 %显示图像saturn2如图3.6(a)所示 %计算傅里叶变换并移位 %显示傅里叶变换谱如3.6(b)所示
例3.4 真彩图像及其傅里叶变换谱 MATLAB程序: figure(1); A=imread('image1.jpg'); B=rgb2gray(A); imshow(B);
图像增强
例 4.1 用 Matlab 程序实现线性灰度变换的图像增强: %读入并显示原始图像 I = imread('pout.tif'); imshow(I); I=double(I); [M,N]=size(I); %进行线性灰度变换 for i=1:M for j=1:N if I(i,j)<=30 I(i,j)=I(i,j); elseif I(i,j)<=150 I(i,j)=(200-30)/(150-30)*(I(i,j)-30)+30; else I(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200; end end end 例 4.2 I=imread('lena.bmp'); figure;imshow(I); I=double(I); I2=41*log(1+I); I2=uint8(I2); figure;imshow(I2); 例 4.3 灰度切割变换的 Matlab 的程序如下: I=imread('007.bmp'); figure;imshow(I); I=double(I) [M,N]=size(I); for i=1:M for j=1:N
3.8.2 Radon 变换的 MATLAB 实现 例 3.8 真彩图像的 Radon 变换 MATLAB 程序如下: RGB=imread('image2.jpg'); %装入真彩图像 GRAY=rgb2gray(RGB); %将真彩图像转换为灰度图像 figure(2); imshow(GRAY); %显示灰度图像如图 3.16(a) [R,xp] = radon(GRAY,[0 45]); %计算变换角度为 0°和 45°的 Radon 变换 figure; plot(xp,R(:,1)); title('R_{0^o} (x\prime)') %显示 0°方向上的 Radon 变换如图 3.16(b) figure; plot(xp,R(:,2)); title('R_{45^o} (x\prime)') %显示 45°方向上的 Radon 变换如图 3.16(c) 例 3.9 连续角度的 Radon 变换
%计算幅度频谱 F=|F(u,v)| %显示幅度频谱,如图 2.3(b) %平滑三维曲面上的小格 %关闭坐标系 %建立图形窗口 2 %扩展 F 的对比度以增强视觉效果 %用图像来显示幅度频谱,如图 2.3(c)
第3章
3.4.4 二维 FFT 的 MATLAB 实现 例3.2 简单图像及其傅里叶变换
MATLAB程序: %建立简单图像d并显示之 d = zeros(32,32); d(13:20,13:20) = 1; figure(1); imshow(d,'notruesize'); %计算傅里叶变换并显示之 D = fft2(d); figure(2); imshow(abs(D),[-1 5],'notruesize');
%建立简单图像如图 3.17(a)
%规定变换角度的范围 %计算 Radon 变换 %以图像方式显示变换结果 R, %其 x 轴和 y 轴分别为 theta 和 xp %显示图像标题 R ( x' ) %显示 x 坐标“ ( degrees) ”
10
title(‘R_{\theta} (X\prime)’); xlabel(‘\theta (degrees)’);
对于一组连续角度的 Radon 变换通常用一幅图像来表示。本例先建立一幅简单图像, 然后令变换角度从 0° 以 1°的增量变化到 180°时的 Radon 变换情况。 其 MATLAB 程序如下:
I = zeros(100,100); I(25:75, 25:75) = 1; figure(1);imshow(I); theta = 0:180; [R,xp] = radon(I,theta); figure(2); imagesc(theta,xp,R);
图像变换
%图像大小3232 %中心白色方块大小为88 %建立图形窗口叶变换,fft2(d) = fft(fft(d).').' %建立图形窗口2 %显示图像 d 的傅里叶变换谱如 3.5(b)所示
例3.3 MATLAB图像及其傅里叶变换谱 MATLAB程序: figure(1); load imdemos saturn2; imshow(saturn2); figure(2); S= fftshift(fft2(saturn2)); imshow(log(abs(S)),[ ]);
I=imread('tire.tif'); [M,N]=size(I); II1=zeros(M,N); for i=1:16 II(:,:,i)=imnoise(I,'gaussian',0,0.01); II1=II1+double(II(:,:,i)); if or(or(i==1,i==4),or(i==8,i==16)); figure; imshow(uint8(II1/i)); end end