Matlab学习(一):数字图像处理大作业用到的函数
1.dlmread——将以 ASCII 码分隔的数值数据读入到矩阵中
dt = dlmread('data1.txt',' ',,);
dt = dt(:,);
save('data2.txt','dt','-ascii');
2.mean
mean(A) % 求各行的均值
mean(A,) % 求各列的均值
3.min/max
*dim=1 返回行向量,每列的最大值
dim=2 返回列向量,每行的最大值
max(A,[],dim)
4.round 四舍五入取整(向最近的整数取整)
5.struct
s = struct('field1',values1,'field2',values2,...) 
这是在建立结构体的时候就赋值,values1,values2就是针对field1,field2所赋的值。field1,field2是域名称。
*“true”或”false”直接创建逻辑数组
6.nargin 判断输入参数个数
7.norm
、如果A为矩阵
n=norm(A)
返回A的最大奇异值,即max(svd(A)) n=norm(A,p)
根据p的不同,返回不同的值p
返回A中最大一列和,即max(sum搜索(abs(A)))
返回A的最大奇异值,和n=norm(A)用法一样
inf 返回A中最大一行和,即max(sum(abs(A’)))
‘fro’ A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A))) 、如果A为向量,norm(A,p)返回向量A的p范数。
即返回 sum(abs(A).^p)^(/p),对任意 <p<+∞. norm(A)返回向量A的2范数,即等价于norm(A,)。
norm(A,inf) 返回max(abs(A))
norm(A,-inf) 返回min(abs(A))
8.函数句柄
函数句柄:是包含了函数的路径、函数名、类型以及可能存在的重载方法。
 函数句柄必须通过专门的定义创建的,而一般的图像的句柄是自动建立的。
创建函数句柄使用@或者str2func命令创建
[email=h_fun=@fun]h_fun=@fun[/email];
 h_fun=str2func('fun');
比如说sin函数,[email=h_sin=@sin]h_sin=@sin[/email];   h_sin=str2func('sin');
执行sin函数     feval
 feval('sin',pi/2)
 ans =
      1
那么使用函数句柄有什么好处呢?
1、提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。
2、使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径,比如说我创建了一个fun
 h_fun=str2func('rei');
可以用functions来查看这个function,结果果然已经包括了路径。
functions(h_fun)
 ans = 
     function: 'rei'
         type: 'simple'
         file: 'G:\program\serial232\rei.m'
9.arrayfun
利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性。
1、A=ARRAYFUN(FUN, B)
 FUN是函数句柄,对B中的每一个元素调用FUN函数(计算顺序随意),结果存放于A中,size(A)==size(B)
 FUN函数可接受numeric, logical, char, struct, cell的自变量类型。
2、[A, B, ...] = ARRAYFUN(FUN, C, ...)
 FUN函数的返回值是一个向量,对B中的每一个元素调用FUN函数,计算结果放在A,B…中。
3、 A = ARRAYFUN(FUN, B, C,  ...)
 FUN函数接受参数不唯一,分别调用B, C,  ...中的元素,A(i,j...)=Fun(B(i,j...),C(i,j,...)...),
B,C...大小必须相等。
*注意,如果你的函数y=func(x) 返回的y不是一个标量值,而是矩阵,字符串,cell数组等不单单占一个存储空间的数据时
  要设置cellfun的输出形式UniformOutput为0
  b=cellfun('func',a,'UniformOutput',0);
  这时候b也是一个cell矩阵了,每个元素是根据a中计算的结果
例1、Fun调用B中的一个数值
>> s=[ ; ];
>> f=@(x) x^;
>> arrayfun(f,s)
ans =
例2、Fun的接受参数是一个向量
>> ss=num2cell(s,);
>> f=@(x) sum(x{:}.^);
>> arrayfun(f,ss)
ans =
例3、Fun函数返回值是向量
>> F=@(x) x{:}.^;
>> cell2mat(arrayfun(F,ss,'UniformOutput',false))
ans =
例4、Fun函数参数不唯一
>> f=@(x,y) x^+y^;
>> [X,Y]=meshgrid(-:,-:);
>> Z=arrayfun(f,X,Y);
>> mesh(X,Y,Z)
例5、Fun函数的参数不唯一,而且都是向量
>> F=@(f,h)sum(diff(f{:}).^)+sum(diff(h{:}).^);
>> f=[,,;,,;,,];
>> h=[,;,;];
>> ff=num2cell(f,);
>> hh=num2cell(h,);
>> fff=repmat(ff',length(hh),1);
>> hhh=repmat(hh,,length(ff));
>> arrayfun(F,fff,hhh)
ans =
10. fix 向0靠拢取整
11. clf 清除图形
12. imcrop 图像裁剪
调用格式:
I2=imcrop(I,RECT);
X2=imcrop(X,MAP,RECT);
RGB2=imcrop(RGB,RECT);
其中,I、X、RGB分别对应灰度图像、索引图像、RGB图像的数据矩阵,MAP为索引图像颜色表,I2、X2、RGB2分别为各自输入矩阵所对应的输出矩阵。而RECT为可选参数,格式为[XMIN YMIN WIGTH HEIGHT].例如[20 20 40 40],则剪裁后的图像的左上角像素为原图像位置在(20,20)的像素,而剪裁后图像的右下角像素为原图像位置在(60,60)的像素。
另外,如不加参数RECT,将使用鼠标在原图像上划矩形框的方法来实现图像的剪裁,所划矩形框内的图像将在新窗口中输出。
13. cumsum 计算各行的累加值
14. drawnow
将还未处理完的图像实时的显示出来,可以理解为立即执行的plot,变化的plot。
当代码执行时间长,需要反复执行plot时,Matlab程序不会马上把图像画到figure上,这时,要想实时看到图像的每一步变化情况,需要使用这个语句。
15.sub2ind:把数组中元素下标转换为该元素在数组中对应的索引值
在命令窗口输入:
>> A=[4 7 2 9 8;3 9 1 4 3;1 5 9 6 4;8 3 7 1 0]
A =
4 7 2 9 8
3 9 1 4 3
1 5 9 6 4
8 3 7 1 0
则A中每个元素对应的索引如下(MATLAB中数据是按列的方式存储的):
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
ind=sub2ind(siz,I,J):siz表示要转换的矩阵的行列数,I是要转换矩阵的行标,J是要转换矩阵的列标。I,J的行列数必须相同。ind为输出参数,其行列数与I,J相同。ind即为索引。
在命令窗口中输入:
>> ind=sub2ind(size(A),[1,2;3,4],[1,1;2,2])
则显示
ind =
1 2
7 8
从运算结果可以看出,在矩阵A中,下标(1,1)的索引值为1,下标(2,1)的索引值为2,下标(3,2)的索引值为7,下标(4,2)的索引值为8 16.numel
该函数用于计算数组中满足指定条件的元素个数。若是一幅图像,则numel(A)将给出它的像素数。语法格式: n = numel(A) 返回数组A中元素个数。
17.unique
b = unique (a) %取集合a的不重复元素构成的向量
18. nnz(A)返回A中非0元素的个数
Matlab学习(一):数字图像处理大作业用到的函数的更多相关文章
- 【遥感数字图像处理实验】Erdas版详细图文实验教程(8实验全)
		
@ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 遥感数字图像的处理,是对遥感数字图像的计算机处理.与工业和医学数字图像不同,遥感数字图像类型更为多样,内容更为复杂.因此,遥感 ...
 - Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
		
原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...
 - Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
		
原文:Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法 [函数名称] 图像雾化 AtomizationProcess(WriteableBitmap src,i ...
 - Win8Metro(C#)数字图像处理--2.34直方图规定化
		
原文:Win8Metro(C#)数字图像处理--2.34直方图规定化  [函数名称] WriteableBitmap HistogramSpecificateProcess(WriteableBi ...
 - Win8Metro(C#)数字图像处理--2.3图像反色
		
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下: ...
 - Win8MetroC#数字图像处理--2.1图像灰度化
		
原文:Win8MetroC#数字图像处理--2.1图像灰度化 [函数说明] 图像灰度化函数GrayProcess(WriteableBitmap src) [算法说明] 图像灰度化就是去掉彩色 ...
 - 数字图像处理(MATLAB版)学习笔记(2)——第2章 灰度变换与空间滤波
		
0.小叙闲言 1.本章整体结构 2.书中例子 例2.1 主要是使用函数imadjust,来熟悉一下灰度处理,体验一把 >> imread('myimage.jpg'); >> ...
 - 数字图像处理(MATLAB版)学习笔记(1)——第1章 绪言
		
0.下定决心 当当入手数字图像处理一本,从此开此正式跨入数字图像处理大门.以前虽然多多少少接触过这些东西,也做过一些相关的事情,但感觉都不够系统,也不够专业,从今天开始,一步一步地学习下去,相信会有成 ...
 - 数字图像处理学习笔记之一 DIP绪论与MATLAB基础
		
写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...
 
随机推荐
- BigDecimal在实际项目的应用及遇到的问题
			
我们都知道,java中对大小数,高精度的计算都会用到BigDecimal.但是在实际应用中,运用BigDecimal还是会遇到一些问题.下面说一下我在项目中怎么样BigDecimal和遇到的一些问题. ...
 - ocanvas 画板
			
使用ocanvas做了个简单的在线画板. ocanvas参考:http://ocanvas.org/ 效果如下: 主要代码如下: <!DOCTYPE html> <html> ...
 - U盘安装Win7操作系统
			
玩转Windows7系统镜像四部曲 Step 1: 下载Win7 ISO系统镜像 温馨提示:请您尽量选用Win7之家提供的官方原版镜像安装,因为正版比各种所谓的"精简版.纯净版" ...
 - bzoj3822: 文学
			
Description 巨酱和主席是一对好朋友.他们都很喜欢读书,经常一起阅读相关领域书籍,进行系统的学习.一天主席列出了一份列表,里面共 p 本书,其中不乏<约翰克里斯多夫>,<名 ...
 - razor 拼接字符串
			
在asp.net引擎中 拼接字符串可以这样写 <script src="~/script/<%=scriptname%>.js"></script&g ...
 - [Tex学习]WinEdit 常用软件快捷键
			
WinEdit 常用软件快捷键 编辑: Alt+C:在剪贴板原有复制文本后增加新的被选择的文本. Ctrl+Shift+Alt+Right/Left:对选中文本增加或者删除Comment标记. Ctr ...
 - Eclipse启动Tomcat后无法访问项目
			
Eclipse中的Tomcat可以正常启动,不过发布项目之后,无法访问,包括http://localhost:8080/的小猫页面也无法访问到,报404错误.这是因为Eclipse所指定的Server ...
 - PASCAL==CALLBACK==WINAPI==__stdcall
			
VC里面:PASCAL==CALLBACK==WINAPI==__stdcall _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压 ...
 - Struts2中的异常处理
			
因为在Action的execute方法声明时就抛出了Exception异常,所以我们无需再execute方法中捕捉异常,仅需在struts.xml 中配置异常处理. 为了使用Struts2的异常处理机 ...
 - web服务器长连接
			
web服务器都提供长连接的方式,所谓长连接就是客户端一次请求完后,不关闭连接,保持一段时间的连接,下次此客户端再次请求时,不用创建新连接,复用所保持的连接即可.从理论上,长连接可以免去大量建立和关闭连 ...