《数字图像处理》冈萨雷斯,Matlab函数汇总 .图像显⽰colorbar 显⽰彩条
getimage 由坐标轴得到图像数据ice(DIPUM)交互彩⾊编辑image 创建和显⽰图像对象imagesc 缩放数据并显⽰为图像immovie 由多帧图像制作电影imshow 显⽰图像
imview 在Image Viewer中显⽰图像montage 将多个图像帧显⽰为矩阵蒙太奇movie 播放录制的电影帧
rgbcube 显⽰⼀个彩⾊RGB⽴⽅体subimage 在单个图形中显⽰多幅图像truesize 调整图像的显⽰尺⼨warp 将图像显⽰为纹理映射的表⾯图像⽂件输⼊/输出
Dicominfo 从⼀条DICOM消息中读取元数据Dicomread 读⼀幅DICOM图像Dicomwrite 写⼀幅DICOM图像
Dicom-dict.txt 包含DICOM数据字典的⽂本⽂件Dicomuid 产⽣DICOM唯⼀的识别器Imfinfo 返回关于图像的⽂件的信息Imread 读图像⽂件Imwrite 写图像⽂件图像算术
Imabsdiff 计算两幅图像的绝对差Imadd 两幅图像相加或把常数加到图像上Imcomplement 图像求补
Imdivide 两幅图像相除,或⽤常数除图像Imlincomb 计算图像的线性组合Immultiply 两幅图像相乘或⽤常数乘图像Imsubtract 两幅图像相减,或从图像中减去常数⼏何变换
Checkerboard 创建棋盘格图像
Findbounds 求⼏何变换的输出范围Fliptform 颠倒TFORM结构的输⼊/输出Imcrop 修剪图像Imresize 调整图像⼤⼩Imrotate 旋转图像
Imtransform 对图像应⽤⼏何变换Intline 整数坐标线绘制算法Makersampler 创建重取样器结构Maketform 创建⼏何变换结构(TFORM)
Pixeldup(DIPUM)在两个⽅向上复制图像的像素Tformarray 对N-D数组应⽤⼏何变换Tformfwd 应⽤正向⼏何变换Tforminv 应⽤反向⼏何变换
Vstformfwd(DIPUM)可视化正向⼏何变换图像匹配
Cpstruct2pairs 将CPSTRUCT转换为有效的控制点对Cp2tform 由控制点对推断⼏何变换Cpcorr 使⽤互相关校准控制点位置Cpselect 控制点选择⼯具Normxcorr2 归⼀化⼆维互相关像素值及统计
Corr2 计算⼆维相关系数
Covmatrix(DIPUM)计算向量族的协⽅差矩阵Imcontour 创建图像数据的轮廓线Imhist 显⽰图像数据的直⽅图Impixel 确定像素的彩⾊点
Improfile 计算沿着线段的像素值横截⾯Mean2 计算矩阵元素的均值Pixval 显⽰关于像素的信息Regionprops 测量图像区域的属性
Statmoments(DIPUM)计算⼀幅图像直⽅图的统计中⼼距Std2 计算矩阵元素的标准偏差图像分析(包括分割、描述和识别)
Bayesgauss(DIPUM)⾼斯模式的贝叶斯分类器Bound2eight(DIPUM)将4连接边界转换为8连接边界
Bound2four(DIPUM)将8连接边界转换为4连接边界Bwboundaries 追踪区域边界Bwtraceboundary 追踪单个边界Bound2im(DIPUM)将边界转换为图像Boundaries(DIPUM)追踪区域边界
Bsubsamp(DIPUM)对边界⼆次取样
Colorgrad(DIPUM)计算⼀幅RGB图像的向量梯度Colorseq(DIPUM)分割⼀幅彩⾊图像Connectpoly(DIPUM)连接多边形的顶点Diameter(DIPUM)测量图像区域的直径Edge(DIPUM)在⼀幅亮度图像中寻找边缘Fchcode(DIPUM)计算边界的freeman链码Frdescp(DIPUM)计算傅⾥叶描绘⼦
Graythresh 使⽤Ostu⽅法计算图像的全局阈值Hough(DIPUM) Hough变换
Houghlines(DIPUM)基于Hough变换提取线段Houghpeaks(DIPUM)在Hough变换中检测峰值Houghpixels(DIPUM)计算属于Hough变换bin的图像像素Ifrdescp(DIPUM)计算逆傅⾥叶描绘⼦
Imstack2vectors(DIPUM)从图像堆栈提取向量Invmoments(DIPUM)计算图像不变距Mahalanobis(DIPUM)计算Mahalanobis距离Minperpoly(DIPUM)计算最⼩周长多边形Polyangles(DIPUM)计算多边形内⾓
Princomp(DIPUM)得到主分量向量和相关量Qtdecomp 执⾏四叉树分解Qtgetblk 得到四叉树分解中的块值Qtsetblk 在四叉树中设置块值
Randvertex(DIPUM)随机置换多边形顶点
Regiongrow(DIPUM)由区域⽣长来执⾏分割Signature(DIPUM)计算边界的标记Specxture(DIPUM)计算图像的谱纹理
Splitmerge(DIPUM)使⽤分离-合并算法分割图像Statxture(DIPUM)计算图像中纹理的统计度量Strsimilarity(DIPUM)两个串间的相似性度量
X2majoraxis(DIPUM)以区域的主轴排列坐标x图像压缩
Compare(DIPUM)计算和显⽰两个矩阵间的误差Entropy(DIPUM)计算矩阵的熵的⼀阶估计Huff2mat(DIPUM)解码霍夫曼编码矩阵
Huffman(DIPUM)为符号源建⽴⼀个变长霍夫曼码Im2jpeg(DIPUM)使⽤JPEG近似压缩⼀幅图像
Im2jpeg2k(DIPUM)使⽤JPEG2000近似压缩⼀幅图像Imratio(DIPUM)计算两幅图像或变量中的⽐特率Jpeg2im(DIPUM)解码IM2JPEG压缩的图像Jpeg2k2im(DIPUM)解码IM2JPEG2K压缩的图像Lpc2mat(DIPUM)解压缩⼀维有损预测编码矩阵Mat2huff(DIPUM)霍夫曼编码矩阵
Mat2lpc(DIPUM)使⽤⼀维有损预测编码矩阵Quantize(DIPUM)量化UINT8类矩阵的元素图像增强
Adapthisteq ⾃适应直⽅图量化
Decorrstretch 对多通道图像应⽤去相关拉伸Gscale(DIPUM)按⽐例调整输⼊图像的亮度Histeq 使⽤直⽅图均衡化来增强对⽐度Intrans(DIPUM)执⾏亮度变换Imadjust 调整图像亮度值或彩⾊映射Stretchlim 寻找对⽐度拉伸图像的限制图像噪声
Imnoise 给⼀幅图像添加噪声
Imnoise2(DIPUM)使⽤指定的PDF⽣成⼀个随机数数组Imnoise3(DIPUM)⽣成周期噪声线性和⾮线性空间滤波
Adpmedian(DIPUM)执⾏⾃适应中值滤波Convmtx2 计算⼆维卷积矩阵Dftcorr(DIPUM)执⾏频率域相关Dftfilt(DIPUM)执⾏频率域滤波Fspecial 创建预定义滤波器Medfilt2 执⾏⼆维中值滤波Imfilter 滤波⼆维和N维图像Ordfilter2 执⾏⼆维顺序统计滤波
Spfilt(DIPUM)执⾏线性和⾮线性空间滤波Wiener2 执⾏⼆维去噪滤波线性⼆维滤波器设计
Freqspace 确定⼆维频率响应间隔Freqz2 计算⼆维频率响应
Fsamp2 使⽤频率取样设计⼆维FIR滤波器Ftrans2 使⽤频率变换设计⼆维FIR滤波器Fwind1 使⽤⼀维窗法设计⼆维滤波器Fwind2 使⽤⼆维窗法设计⼆维滤波器Hpfilter(DIPUM)计算频率域⾼通滤波器Lpfilter(DIPUM)计算频率域低通滤波器图像去模糊(复原)
Deconvblind 使⽤盲去卷积去模糊图像
Deconvlucy 使⽤Lucy-Richardson⽅法去模糊Deconvreg 使⽤规则化滤波器去模糊Deconvwnr 使⽤维纳滤波器去模糊Edgetaper 使⽤点扩散函数锐化边缘Otf2psf 光传递函数到点扩散函数Pst2otf 点扩散函数到光传递函数
图像变换
Dct2 ⼆维离散余弦变换Dctmtx 离散余弦变换矩阵
Fan2para 将扇形束投影变换为并⾏射束Fanbeam 计算扇形射束变换Fft2 ⼆维快速傅⾥叶变换Fftn N维快速傅⾥叶变换Fftshift 颠倒FFT输出的象限Idct2 ⼆维逆离散余弦变换Ifanbeam 计算扇形射束逆变换Ifft2 ⼆维快速傅⾥叶逆变换Ifftn N维快速傅⾥叶逆变换Iradon 计算逆Radon变换
Para2fan 将并⾏射束投影变换为扇形射束Phantom ⽣成头部仿真模型的图像Radon 计算Radon变换⼩波
Wave2gray(DIPUM)显⽰⼩波分解系数
Waveback(DIPUM)执⾏多灰度级⼆维快速⼩波逆变换Wavecopy(DIPUM)存取⼩波分解结构的系数Wavecut(DIPUM)在⼩波分解结构中置零系数Wavefast(DIPUM)执⾏多灰度级⼆维快速⼩波变换Wavefilter(DIPUM)构造⼩波分解和重构滤波器Wavepaste(DIPUM)在⼩波分解结构中放置系数Wavework(DIPUM)编辑⼩波分解结构Wavezero(DIPUM)将⼩波细节系数设置为零领域和块处理
Bestblk 为块处理选择块⼤⼩Blkproc 为图像实现不同的块处理Col2im 将矩阵列重排为块Colfilt 按列邻域操作Im2col 将图像块重排为列Nlfilter 执⾏⼀般的滑动邻域操作形态学操作(亮度和⼆值图像)Conndef 默认连通性Imbothat 执⾏底帽滤波
Imclearborder 抑制与图像边框相连的亮结构Imclose 关闭图像Imdilate 膨胀图像Imerode 腐蚀图像
Imextendedmax 最⼤扩展变换Imextendedmin 最⼩扩展变换Imfill 填充图像区域和孔洞
Imhmax H最⼤变换Imhmin H最⼩变换Imimposemin 强制最⼩Imopen 打开图像Imreconstruct 形态学重构Imregionalmax 局部最⼤区域Imregionalmin 局部最⼩区域Imtophat 执⾏顶帽滤波Watershed 分⽔岭变换形态学操作(⼆值图像)Applylut 使⽤查表法执⾏邻域操作
Bwarea 计算⼆值图像中的对象⾯积Bwareaopen 打开⼆值区域(删除⼩对象)Bwdist 计算⼆值图像的距离变换Bweuler 计算⼆值图像的欧拉数Bwhitmiss ⼆值击不中操作
Bwlabel 在⼆维图像中标记连接分量
Bwlabeln 在N维⼆值图像中标记连接分量Bwmorph 对⼆值图像执⾏形态学操作Bwpack 打包⼆值图像
Bwperim 确定⼆值图像中的对象的周长Bwselect 选择⼆值图像中的对象Bwulterode 最终腐蚀Bwunpack 解包⼆值图像
Endpoints(DIPUM)计算⼆值图像的端点Makelut 构建applylut使⽤的查找表结构元素(STREL)的创建和操作Getheight 得到strel的⾼度
Getneighbors 得到strel邻域的偏移位置和⾼度Getnhood 得到strel邻域Getsequence 得到分解的strel序列Isflat 对平坦的strel返回值Reflect 以其中⼼反射strelStrel 创建形态学结构元素Translate 变换strel基于区域的处理
Histroi(DIPUM)计算图像中的ROI的直⽅图Poly2mask 将ROI多边形转换为掩膜Roicolor 基于颜⾊选择ROIRoifill 在任意区域内平稳地内插
Roifilt2 对ROI进⾏滤波Roipoly 选择多边形ROI彩⾊映射处理
Brighten 加亮或加暗彩⾊映射Cmpermute 在彩⾊映射中重排颜⾊
Cmunique 寻找唯⼀的彩⾊映射颜⾊和相应的图像Colormap 设置或得到彩⾊查找表
Imapprox 以很少的颜⾊近似被索引的图像Rgbplot 绘制RGB彩⾊映射分量彩⾊空间转换
Applyform 应⽤独⽴于设备的彩⾊空间变换
Hsv2rgb 将HSV值转换为RGB彩⾊空间Iccread 读ICC彩⾊配置⽂件Lab2double 将L*a*b*彩⾊值转换为double类Lab2uint16 将L*a*b*彩⾊值转换为uint16类
Lab2uint8 将L*a*b*彩⾊值转换为uint8类Makecform 创建独⽴于设备的彩⾊空间变换结构Ntsc2rgb 将NTSC值转换为RGB彩⾊空间
Rgb2hsv 将RGB值转换为HSV彩⾊空间
Rgb2ntsc 将RGB值转换为NTSC彩⾊空间Rgb2ycbcr 将RGB值转换为YCBCR彩⾊空间Ycbcr2rgb 将YCBCR值转换为RGB彩⾊空间Rgb2hsi(DIPUM)将RGB值转换为HSI彩⾊空间Hsi2rgb(DIPUM)将HSI值转换为RGB彩⾊空间Whitepoint 返回标准照明的XYZ值
Xyz2double 将XYZ彩⾊值转换为double类Xyz2uint16 将XYZ彩⾊值转换为uint16类数组操作
Circshift 循环地移位数组Dftuv(DIPUM)计算⽹格数组Padarray 填充数组
Paddedsize(DIPUM)计算⽤于FFT的最⼩填充尺⼨图像类型和类型转换
Changeclass 改变⼀幅图像的类Dither 使⽤抖动转换图像
Gray2ind 将亮度图像转换为索引图像Grayslice 通过阈值处理从亮度图像创建索引图像Im2bw 通过阈值处理将图像转换为⼆值图像
Im2double 将图像数组转换为双精度Im2java 将图像转换为Java图像
Im2java2d 将图像转换为Java缓存的图像对象Im2uint8 将图像数组转换为8⽐特⽆符号整数Im2uint16 将图像数组转换为16⽐特⽆符号整数Ind2gray 将索引图像转换为亮度图像
Ind2rgb 将索引图像转换为RGB图像Label2rgb 将标记矩阵转换为RGB图像Mat2gray 将矩阵转换为亮度图像
Rgb2gray 将RGB图像或彩⾊映射转换为灰度图像Rgb2ind 将RGB图像转换为索引图像其他函数
Conwaylaws(DIPUM)对单个像素应⽤Conway的遗传定律Manualhist(DIPUM)交互地⽣成2模式直⽅图Twomodegauss(DIPUM)⽣成⼀个2模式⾼斯函数Uintlut 基于查找表计算新数组值⼯具箱参数
Iptgetpref 获得图像处理⼯具箱参数的值Iptsetpref 设置图像处理⼯具箱参数的值matlab 标注连通域clear;clc;
f=imread('c:\\1.jpg');gray_level=graythresh(f);f=im2bw(f,gray_level);[l,n]=bwlabel(f,8)imshow(f)hold onfor k=1:n[r,c]=find(l==k);rbar=mean(r);cbar=mean(c);
plot(cbar,rbar,'Marker','o','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',10);plot(cbar,rbar,'Marker','*','MarkerEdgecolor','w');end主要概念:1. 4连接 8连接0 1 0
1 p 1 ===> 4连接,p为当前像素点。0 1 01 1 1
1 p 1 ====》8连接,p为当前像素点。
1 1 1
2. bwlabel()函数
语法: [ L, num]=bwlabel(f,conn)
其中f是⼀副⼆值图像,conn⽤来指定期望的连接(不是4就是8),默认为8,输出L称为标记矩阵,参数num给出所找到连接分量的总数。3. find()函数
该函数⾮常有⽤,会返回指定条件的索引值,在标记矩阵中的作⽤是返回对应对象的索引。I = FIND(X) returns the linear indices corresponding to
the nonzero entries of the array X. X may be a logical expression.Use IND2SUB(SIZE(X),I) to calculate multiple subscripts fromthe linear indices I.
find(bwlabel(bw)==2)表⽰的意思是连通域2中的数值所在向量的位置。4. mean()函数求数组平均值matlab函数_连通区域
1、matlab函数bwareaopen——删除⼩⾯积对象格式:BW2 = bwareaopen(BW,P,conn)
作⽤:删除⼆值图像BW中⾯积⼩于P的对象,默认情况下使⽤8邻域。算法:
(1)Determine the connected components. 确定所连接的组件。L = bwlabeln(BW, conn);
(2)Compute the area of each component. 计算各成分的⾯积。S = regionprops(L, 'Area');
(3)Remove small objects. 去除⼩物体。bw2 = ismember(L, find([S.Area] >= P));2、matlab函数bwarea——计算对象⾯积格式:total = bwarea(BW)
作⽤:估计⼆值图像中对象的⾯积。
注:该⾯积和⼆值图像中对象的像素数⽬不⼀定相等。3、matlab函数imclearborder——边界对象抑制格式:IM2 = imclearborder(IM,conn)
作⽤:抑制和图像边界相连的对象。若IM是⼆值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing borderstructures.算法:
(1)Mask image is the input image.
(2)Marker image is zero everywhere except along the border, where it equals the mask image.4、matlab函数bwboundaries——获取对象轮廓格式:B = bwboundaries(BW,conn)(基本格式)
作⽤:获取⼆值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是⼀个P×1的cell数组,P为对象个数,每个cell 是Q×2的矩阵,对应于对象轮廓像素的坐标。5、matlab函数imregionalmin——获取极⼩值区域格式:BW = imregionalmin(I,conn)
作⽤:寻找图像I的极⼩值区域(regional maxima),默认情况conn=8。
Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixelsall have a higher value. 极⼩区域都具有恒定的强度值,其外部边界象素都具有较⾼的值相连的像素的分量。6、matlab函数bwulterode——距离变换的极⼤值格式:BW2 = bwulterode(BW,method,conn)
作⽤:终极腐蚀。寻找⼆值图像BW的距离变换图的区域极⼤值(regional maxima)。⽤于距离变换的距离默认为euclidean,连通性为8邻域。
7、regionprops统计被标记的区域的⾯积分布,显⽰区域总数。函数regionprops语法规则为:STA TS = regonprops(L,properties)该函数⽤来测量标注矩阵L中每⼀个标注区域的⼀系列属性。
L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是⼀个长度为max(L()的结构数组,结构数组的相应域定义了每⼀个区域相应属性下的度量。
Properties可以是由逗号分割的字符串列表、包含字符串的单元数组、单个字符串'all'或者'basic'。如果properties等于字符串'all',则表4.1中的度量数据都将被计算;如果properties 等于字符串'basic',则属性:'Area','Centroid'和'BoundingBox'将被计算。表1就是所有有效的属性字符串fspecial函数
fspecial函数⽤于建⽴预定义的滤波算⼦,其语法格式为:h = fspecial(type)h = fspecial(type,para)
其中type指定算⼦的类型,para指定相应的参数;type的类型有:1、'average'averaging filter
为均值滤波,参数为hsize代表模板尺⼨,默认值为【3,3】。H = FSPECIAL('average',HSIZE) returns an averaging filter H of sizeHSIZE. HSIZE can be a vector specifying the number of rows and columns inH or a scalar, in which case H is a square matrix.The default HSIZE is [3 3].2、 'disk'
circular averaging filter
为圆形区域均值滤波,参数为radius代表区域半径,默认值为5.H = FSPECIAL('disk',RADIUS) returns a circular averaging filter(pillbox) within the square matrix of side 2*RADIUS+1.The default RADIUS is 5.3、'gaussian'
Gaussian lowpass filter
为⾼斯低通滤波,有两个参数,hsize表⽰模板尺⼨,默认值为【3 3】,sigma为滤波器的标准值,单位为像素,默认值为0.5.
H = FSPECIAL('gaussian',HSIZE,SIGMA) returns a rotationallysymmetric Gaussian lowpass filterof size HSIZE with standard
deviation SIGMA (positive). HSIZE can be a vector specifying thenumber of rows and columns in H or a scalar, in which case H is asquare matrix.
The default HSIZE is [3 3], the default SIGMA is 0.5.4、'laplacian' filter approximating the 2-D Laplacian operator
为拉普拉斯算⼦,参数alpha⽤于控制算⼦形状,取值范围为【0,1】,默认值为0.2.H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filterapproximating the shape of the two-dimensional Laplacianoperator. The parameter ALPHA controls the shape of theLaplacian and must be in the range 0.0 to 1.0.The default ALPHA is 0.2.5、'log'
Laplacian of Gaussian filter
为拉普拉斯⾼斯算⼦,有两个参数,hsize表⽰模板尺⼨,默认值为【3 3】,sigma为滤波器的标准差,单位为像素,默认值为0.5.
H = FSPECIAL('log',HSIZE,SIGMA) returns a rotationally symmetricLaplacian of Gaussian filter of size HSIZE with standard deviationSIGMA (positive). HSIZE can be a vector specifying the number of rowsand columns in H or a scalar, in which case H is a square matrix.The default HSIZE is [5 5], the default SIGMA is 0.5.6、'motion'motion filter
为运动模糊算⼦,有两个参数,表⽰摄像物体逆时针⽅向以theta⾓度运动了len个像素,len 的默认值为9,theta的默认值为0;
H = FSPECIAL('motion',LEN,THETA) returns a filter to approximate, onceconvolved with an image, the linear motion of a camera by LEN pixels,
with an angle of THETA degrees in a counter-clockwise direction. Thefilter becomes a vector for horizontal and vertical motions.The
default LEN is 9, the default THETA is 0, which corresponds to ahorizontal motion of 9 pixels.7、'prewitt'
Prewitt horizontal edge-emphasizing filter⽤于边缘增强,⼤⼩为【3 3】,⽆参数
H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizeshorizontal edges by approximating a vertical gradient. If you need toemphasize vertical edges, transpose the filter H: H'.[1 1 1;0 0 0;-1 -1 -1].8、'sobel'
Sobel horizontal edge-emphasizing filter⽤于边缘提取,⽆参数
H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizeshorizontal edges utilizing the smoothing effect by approximating avertical gradient. If you need to emphasize vertical edges, transposethe filter H: H'.[1 2 1;0 0 0;-1 -2 -1].9、'unsharp'
unsharp contrast enhancement filter
为对⽐度增强滤波器。参数alpha⽤于控制滤波器的形状,范围为【0,1】,默认值为0.2.H = FSPECIAL('unsharp',ALPHA) returns a 3-by-3 unsharp contrastenhancement filter. FSPECIAL creates the unsharp filter from thenegative of the Laplacian filter with parameter ALPHA. ALPHA controlsthe shape of the Laplacian and must be in the range 0.0 to 1.0.The default ALPHA is 0.2.M⽂件命名的规则总结如下:
1.M⽂件名不能与MATLAB的内部函数名相同。
M⽂件名的命名最好是由⼤⼩写英⽂字母/数字/下划线等组成。如果出现相同MATLAB通常会提⽰。
2. ⽂件名⾸字符不能是数字或下划线。
如果⾸字母是数字或者下划线,MATLAB通常提⽰找不到该⽂件。
3.M⽂件名中不能有空格。
若需要⽤两个或以上单词组合作为⽂件名,各单词必须直接连接组合(可把每个单词⾸字母⼤写以作区分或使⽤下划线)。
如何查看MATLAB⾃带函数的源代码
MATALB属于半开源软件,其中很多函数可以通过“open/edit/type+filename”命令进⾏编辑和查看源代码。但是有⼀些函数仅仅可以找到它的帮助⽂档,却⽆法看到具体的源代码,⽐如min,fft,sum等函数,因为这些函数属于MATLAB的built-in
function(内置函数),即MATLAB 的built-in function的代码是不公开的,有⼈说这些函数的算法是最优化的,保证较低的时间复杂度提⾼效率,所以,我感觉写⼀个算法优先考虑调⽤MATLAB⾃带函数,⾃带函数解决不了的情况下,再⾃⼰去写,毕竟⾃⼰写的代码的效率⽆法达到最优。
要确定哪些函数可以看代码哪些函数不可以看代码,可以通过which命令:
上图中的函数fft, sum, min属于MATLAB的built-in function,⽆法看代码,只能通过
“help/type+filename”来看帮助⽂档,通过这个路径⼀路查下去,M⽂件⾥⾯也只有帮助⽂档,没有源代码。最后⼀个函数axis.m就不是built-in函数,可以通过“edit/open/type +filename”来查看源代码。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^-1022i 虚数单位
realmax 最⼤浮点数,(2-eps)2^1022j 虚数单位Inf ⽆限值
eps 浮点相对经度=2^-52NaN 空值三、数组和矩阵:
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/cubicInterp2 ⼆维插值zi=interp1(x,y,z,xi,yi’method’),bilinearInterp3 三维插值
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为起始点。同样可以⽤上⾯的选项。
因篇幅问题不能全部显示,请点此查看更多更全内容