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版)>,同 ... 
随机推荐
- jquery datatables双击,获取行号。
			function dbClickDatatables(rows) { $("#@(Perfix)tbData tbody tr").dblclick(function(e){ de ... 
- [Spring MVC] - Annotation验证
			使用Spring MVC的Annotation验证可以直接对view model的简单数据验证,注意,这里是简单的,如果model的数据验证需要有一些比较复杂的业务逻辑性在里头,只是使用annotat ... 
- 关于block的一些理解
			之前一直都是用这别人或者是系统系统封装好的block,用这都挺好,可以访问那些定义了block变量的函数变量在block中使用. 首先总结一个block的用法:1.block有些类似于函数的指针 拥有 ... 
- Gridview导出EXCEL(多页) z
			using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ... 
- Python第十二章正则表达式
			1.今天学习的f=open("d:\testcase.xml","r")会报错 需要改成f=open("d:\\testcase.xml", ... 
- 61. Unique Paths   &&  Unique Paths II
			Unique Paths A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagra ... 
- JAVA设计模式之工厂方法模式
			在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymor ... 
- 百度地图API示例之设置级别setZoom与禁止拖拽disableDragging
			百度地图API示例之设置级别setZoom与禁止拖拽disableDragging 设置级别 <html> <head> <meta http-equiv="C ... 
- 关于对 maximio平台的五个常用类的初步理解及总结
			AppBean:绑定应用的默认Bean类,控制主对象集/单个对象,和ui关联的类 继承:DataBean DataBean:任何对象集/单个对象,在ui端处理类. 1.在对象层:写一个Fld类,调用构 ... 
- 127.0.0.1和localhost完全相等吗?
			今天在使用ajax发请求的时候遇到如下问题: 以[Access-Control-Allow-Origin]为关键字搜索的结果进行改进,但没有效果. 返回仔细查看错误提示,发现ajax请求的url是lo ... 
