菜鸟学MATLAB ING!

因为读研了,大四进入实验室,使用起来原来没有怎么太接触的MATLAB。自己也没有通过看书等方式学习,只是在实验室看论文看代码的时候进行help或者询问度娘,另外自己在写一些程序的时候也会想想到底有没有更好的实现方式,因为毕竟MATLAB对于一些开发功能的函数封装的比较完善(当然这对于传统的C++等是优势的同时也是劣势),所以自己会查找一些MATLAB自带的函数去减少代码量。现在每天都在整理,不过自己之前一部分因为备份问题遗失了,所以就先写出来这些,以后还是会继续更新的,GO!FISH!

2014年12月1日
fullfile()
  
  
这个命令可以由磁盘符,目录和文件名生成完整的文件路径。看例子就知道了。如果输入:
f = fullfile('C:','Applications','matlab','myfun.m')
得到结果:
f =
C:\Applications\matlab\myfun.m

dir函数:

获得指定文件夹下的所有子文件夹或文件,并存到文件结构数组中.

 调用方式:

              dir('.')列出当前目录下所有子文件夹和文件

             dir('G:\Matlab')列出指定目录下所有子文件夹和文件

             dir('*.m')列出当前目录下符合正则表达式的文件夹和文件

exist函数:

 
 
exist name
等价于 r=exist(name) ,在程序里面这样更加实用
0 不存在则返回值
1 name 可以是变量名,如果存在,返回值
2 函数名、m 文件名,存在则返回值
3 mex 文件、dll 文件,存在则返回值
4 内嵌的函数,存在则返回值
5 p码文件 , 存在则返回值
6 目录,存在则返回值
7 路径,存在则返回值
8 Java class,存在则返回值

A = exist('name','kind')
name 可以是变量名,函数名、m 文件名、mex 文件、dll 文件、内嵌的函数、p码文件、目录、路径、Java class

kind可以是 :
builtin 内嵌函数
class Java class
dir 目录
file 文件或者目录
var 变量

应用举例
type = exist('plot') %说明当前目录下存在plot这个内嵌函数
type =
5
X=rand(1,1)
X =
0.9593

matabc

r=exist('X')
r =
1

r=exist('X','var')
r =
1
matabc

还有一个非常有用的,曾经在论坛讨论过
如何判定一个结构体为空
s = struct
s =
1x1 struct array with no fields.

size(s) %用size不好判定
ans =
1 1

matabc

length(s) %length也一样
ans =
1

r=exist('s.field') %用exist可以判定
r =
0
bitor(a,b)对a、b按位进行或运算
bitand(a,b)对a、b按位进行和运算
bitcmp(a,N)a在2^N-1上按位的补集
caxis是伪轴缩放的函数
capture是捕获一张图片


 
 
bitshift(a,b)
 
 
表示把a左移b位,所以有:
bitshift(1,1) = 2;

try的作用是让Matlab尝试执行一些语句, 执行过程中如果出错, 则执行catch部分的语句. 其语法:  
try
         尝试执行的语句块
catch
         出错后执行的语句块
end

size(A)函数是用来求矩阵的大小的,你必须首先弄清楚A到底是什么,大小是多少。

比如说一个A是一个3×4的二维矩阵:

      1、size(A) %直接显示出A大小

       输出:ans=3    4

       2、s=size(A)%返回一个行向量s,s的第一个元素是矩阵的行数,第二个元素是矩阵的列数

       输出:s= 3    4

       3、[r,c]=size(A)%将矩阵A的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c

       输出:r= 3

                c=4

       4、[r,c,m]=size(A)

       输出:r= 3

                c= 4

                m=1

也就说它把二维矩阵当作第三维为1的三维矩阵,这也如同我们把n维列向量当作n×1的矩阵一样

       5、当a是一个n维行向量时,size(A)把其当成一个1×n的矩阵,因此size(a)的结果是

       ans 1   n

而不是a的元素个数n

       6、size(A,n)

       如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数。

If X = ones(3,4,5), then

 
 
[d1,d2,d3] = size (X)

1 = d2 = d3 =

d 3 4 5

But when the number of output variables is less than ndims(X):

 
 
[d1,d2] = size (X)

1 = d2 =

d 3 20

The "extra" dimensions are collapsed into a singleproduct.

If n > ndims(X), the "extra"variables all represent singleton dimensions:

 
 
[d1,d2,d3,d4,d5,d6] = size (X)

1 = d2 = d3 =

d 3 4 5

d4 = d5 = d6 =
1 1 1
2014年12月4日
text()函数:

功能: 在当前轴中创建text对象。函数text是创建text图形句柄的低级函数。可用该函数在图形中指定的位置上显示字符串。

用法: text(x,y,'string')在图形中指定的位置(x,y)上显示字符串string

text(x,y,z,'string') 在三维图形空间中的指定位置(x,y,z)上显示字符串string

text(x,y,z,’string’.'PropertyName',PropertyValue…) 对引号中的文字string定位于用坐标轴指定的位置,且对指定的属性进行设置。表7-6给出文字属性名、含义及属性值。

表7-6

属性名

属性说明

属性值

定义字符串

Editing

能否对文字进行编辑

有效值:on、off

缺省值:off

Interpretation

TeX字符是否可用

有效值:tex、none

缺省值:tex

String

字符串(包括TeX字符串)

有效值:可见字符串

放置字符串

Extent

text对象的范围(位置与大小)

有效值:[left, bottom, width, height]

HorizontalAlignment

文字水平方向的对齐方式

有效值:left(文本外框左边对齐,缺省对齐方式)、center(文本外框中间对齐)、right(文本外框右边对齐)

缺省值:left

Position

文字范围的位置

有效值:[x,y,z]直角坐标系

缺省值:[](空矩阵)

Rotation

文字对象的方位角度

有效值:标量(单位为度)

缺省值:0

Units

文字范围与位置的单位

有效值:pixels (屏幕上的像素点)、normalized (把屏幕看成一个长、宽为1的矩形)、inches(英寸)、centimeters(厘米)、points (图象点)、data

缺省值:data

VerticalAlignment

文字垂直方向的对齐方式

有效值:top (文本外框顶上对齐)、cap(文本字符顶上对齐)、middle(文本外框中间对齐)、baseline(文本字符底线齐)、bottom(文本外框底线对齐)

缺省值:middle

指定文字字体

FontAngle

设置斜体文字模式

有效值:normal(正常字体)、italic(斜体字)、oblique(斜角字)

缺省值:normal

FontName

设置文字字体名称

有效值:用户系统支持的字体名或者字符串FixedWidth。

缺省值为 Helvetica

FontSize

文字字体大小

有效值:结合字体单位的数值

缺省值为:10 points

FontUnits

设置属性FontSize的单位

有效值:points (1点=1/72英寸)、normalized(把父对象坐标轴作为一单位长的一个整体;当改变坐标轴的尺寸时,系统会自动改变字体的大小)、inches (英寸)、Centimeters(厘米)、Pixels(像素)

缺省值:points

FontWeight

设置文字字体的粗细

有效值:light(细字体)、normal(正常字体)、demi(黑体字)、Bold(黑体字)

缺省值:normal

控制文字外观

Clipping

设置坐标轴中矩形的剪辑模式

有效值:on、off

on:当文本超出坐标轴的矩形时,超出的部分不显示;

off:当文本超出坐标轴的矩形时,超出的部分显示。

缺省值:off

EraseMode

设置显示与擦除文字的模式。这些模式对生成动画系列与改进文字的显示效果很有好处。

有效值:normal、none、 xor、 background

缺省值:normal

SelectionHighlight

设置选中文字是否突出显示

有效值:on、off

缺省值:on

Visible

设置文字是否可见

有效值:on、off

缺省值:on

Color

设置文字颜色

有效的颜色值:ColorSpec

控制对文字对象的访问

HandleVisibility

设置文字对象句柄对其他函数是否可见

有效值:on、callback、off

缺省值:on

HitTest

设置文字对象能否成为当前对象(见图形CurrentObject属性)

有效值:on、off

缺省值:on

文字对象的一般信息

Children

文字对象的子对象(文字对象没有子对象)

有效值:[](即空矩阵)

Parent

文字对象的父对象(通常为axes对象)

有效值:axes的句柄

Seleted

设置文字是否显示出“选中”状态

有效值:on、off

缺省值:off

Tag

设置用户指定的标签

有效值:任何字符串

缺省值:’’(即空字符串)

Type

设置图形对象的类型(只读类型)

有效值:字符串’text’

UserData

设置用户指定数据

有效值:任何矩阵

缺省值:[](即空矩阵)

控制回调例行执行程序

BusyAction

设置如何处理对文字回调过程中断的句柄

有效值:cancel、queue

缺省值:queue

ButtonDownFcn

设置当鼠标在文字上单击时,程序做出的反应(即执行回调程序)

有效值:字符串

缺省值:' '(空字符串)

CreateFcn

设置当文字被创建时,程序做出的反应(即执行的回调程序)

有效值:字符串

缺省值:' '(空字符串)

DeleteFcn

设置当文字被删除(通过关闭或删除操作)时,程序做出的反应(即执行的回调程序)

有效值:字符串

缺省值:' '(空字符串)

Interruptible

设置回调过程是否可中断

有效值:on、off

缺省值:on(能中断)

UIContextMenu

设置与文字相关的菜单项

有效值:用户相关菜单句柄

 二

打开一幅图像后,用鼠标动态选取一个矩形框(ROI——Regions of Interests),然后保存图像数据矩阵,为后续算法处理用。手动获取图片的boundingbox信息:

  1. figure, imshow('pout.tif');
  2. h = imrect;
  3. position = wait(h);
复制代码
这样,等你选取了图片中的矩形框,然后双击该矩形框时,position返回的就是矩形框的尺寸[x y width height]。

  1. >> position
  2. position =
  3.     20    20   198   174
  4. >>

hist()函数
[n,xout] = hist(...)
返回n和xout,包含有数目频率和间隔位置。可以使用bar(xout, n)来绘制直方图。
fspecial()函数
用于建立预定义的滤波算子,其语法格式为:
h = fspecial(type)
h = fspecial(type,para)
其中type指定算子的类型,para指定相应的参数:

'average'

averaging filter
为均值滤波,参数为hsize代表模板尺寸,默认值为[3,3]。
H = FSPECIAL('average',HSIZE) returns an averaging filter H of size
HSIZE. HSIZE can be a vector specifying the number of rows and columns in
H or a scalar, in which case H is a square matrix.
The default HSIZE is [3 3].

'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.

'gaussian'

Gaussian lowpass filter
为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为0.5.
H = FSPECIAL('gaussian',HSIZE,SIGMA) returns a rotationally
symmetric Gaussian lowpass filter
of size HSIZE with standard
deviation SIGMA (positive). HSIZE can be a vector specifying the
number of rows and columns in H or a scalar, in which case H is a
square matrix.
The default HSIZE is [3 3], the default SIGMA is 0.5.

'laplacian'

filter approximating the 2-D Laplacian operator
为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为[0,1],默认值为0.2.
H = FSPECIAL('laplacian',ALPHA) returns a 3-by-3 filter
approximating the shape of the two-dimensional Laplacian
operator. The parameter ALPHA controls the shape of the
Laplacian and must be in the range 0.0 to 1.0.
The default ALPHA is 0.2.

'log'

Laplacian of Gaussian filter
为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准差,单位为像素,默认值为0.5.
H = FSPECIAL('log',HSIZE,SIGMA) returns a rotationally symmetric
Laplacian of Gaussian filter of size HSIZE with standard deviation
SIGMA (positive). HSIZE can be a vector specifying the number of rows
and 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.

'motion'

motion filter
为运动模糊算子,有两个参数,表示摄像物体逆时针方向以theta角度运动了len个像素,len的默认值为9,theta的默认值为0;
H = FSPECIAL('motion',LEN,THETA) returns a filter to approximate, once
convolved with an image, the linear motion of a camera by LEN pixels,
with an angle of THETA degrees in a counter-clockwise direction. The
filter becomes a vector for horizontal and vertical motions.
The
default LEN is 9, the default THETA is 0, which corresponds to a
horizontal motion of 9 pixels.

'prewitt'

Prewitt horizontal edge-emphasizing filter
用于边缘增强,大小为[3 3],无参数
H = FSPECIAL('prewitt') returns 3-by-3 filter that emphasizes
horizontal edges by approximating a vertical gradient. If you need to
emphasize vertical edges, transpose the filter H: H'.
[1 1 1;0 0 0;-1 -1 -1].

'sobel'

Sobel horizontal edge-emphasizing filter
用于边缘提取,无参数
H = FSPECIAL('sobel') returns 3-by-3 filter that emphasizes
horizontal edges utilizing the smoothing effect by approximating a
vertical gradient. If you need to emphasize vertical edges, transpose
the filter H: H'.
[1 2 1;0 0 0;-1 -2 -1].

'unsharp'

unsharp contrast enhancement filter
为对比度增强滤波器。参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2.

findpeak()
  1. a=[1 3 2 5 6 8 5 3];
  2. [v,p] = findpeaks(a)
v 是峰值的大小
P是峰值的index
hold on 和hold off,是相对使用hold on 和hold off,是相对使用的
前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,原来的图就看不到了,在轴上绘制的是新图,原图被替换了的
x=x(:)
例如x=[1 3
   
   
2 2]
x(:)表示将矩阵中的数据以一列输出,即
1
2
3
2;
x(:,:)第一个冒号表示输出行,第二个冒号表示输出列
x(:,2)
结果为:
3
2
x(1,:)
结果为
1 3
gmdistribution.fit函数()%这个灰常难百度到和理解
initdistribution.m #55line
*与.*
 
 
A=[1 2; 3 4];
B=A;

 
 
A.*B=[1*1 2*2;3*3 4*4]=[1 4;9 16]
而A*B=[1*1+2*3,1*2+2*4;3*1+4*3,3*2+4*4]=[7 10;15 22]
isnan()函数
isnan(A)
A是非数字数值的时候返回1,否则返回0
2014年12月6日
[~,level]=function(); 
表示function函数中有两个返回值参数,但是只想要第二个的时候就要这么写,因为得到两个参数的效率比这样写低
tic
fucntion()
toc
计算出函数执行时间
fprintf()函数

fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:

数据的格式化输出:fprintf(fid, format, variables)

  按指定的格式将变量的值输出到屏幕或指定文件

  fid为文件句柄,若缺省,则输出到屏幕

    1 for standard output (the screen) or 2 for standard error. If FID is omitted, output goes to the screen.

  format用来指定数据输出时采用的格式

    %d 整数

    %e 实数:科学计算法形式

    %f 实数:小数形式

    %g 由系统自动选取上述两种格式之一

    %s 输出字符串

2014年12月9日
.mexa64文件,使用C++编写的,只能在Linux64位下运行的文件程序
mexmaci64文件,只能在MAC系统下运行

matlab写入文件时如何换行,真是个麻烦问题?见下面一个例子就解决了,注意打开文件时的参数是'wt',

path='test.txt';
f=fopen(path,'wt');
fprintf(f,'%s\n','test1');
fprintf(f,'%s','test2');
fclose(f);
2014年12月10日
一 
matlab实现多行注释的三种方法

A.

%{

若干语句

%}

B.

多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R

取消注释: 选中要取消注释的语句, 编辑器菜单Text->Uncomment, 或者快捷键Ctrl+T

C.

if LOGICAL(0)

若干语句

end

这个方法实际上是通过逻辑判断语句不执行相关的语句










   
   


 
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值