Matlab commonly used function

1.tabulate()

求矩阵中各个不同的值在矩阵中出现的次数.

 >> a = [2 4 6 8;3 5 6 3; 9 8 5 3; 7 6 4 0];

>> a
a =
     2     4     6     8
     3     5     6     3
     9     8     5     3
     7     6     4     0
>> aa = tabulate(a(:))
aa =
         0     1.0000    6.2500
    2.0000    1.0000    6.2500
    3.0000    3.0000   18.7500
    4.0000    2.0000   12.5000
    5.0000    2.0000   12.5000
    6.0000    3.0000   18.7500
    7.0000    1.0000    6.2500
    8.0000    2.0000   12.5000
    9.0000    1.0000    6.2500

第一列:元素值,第二列:元素个数,第三列:元素个数占总个数的百分比!

补充:tabulate的输入参数要求是向量,且必须是single或double类型才可以!

2. size()

size(X,1),返回矩阵X的行数;
size(X,2),返回矩阵X的列数;
N=size(X,2),就是把矩阵X的列数赋值给N

size(l1,3)==3 意思是图像l1是不是三维的,即是不是彩色图像,

如果l1是彩色图像的话,size(l1,3)是等于3的,因为彩色图像每个像素点由R、G、B三个色彩组件组成,每个色彩组件有一个值(0到255之间)。

 

3. zeros()

创建一个全为零元素的数组

语法

B = zeros(n) 
B = zeros(m,n) 
B = zeros([m n]) 
B = zeros(d1,d2,d3...) 
B = zeros([d1 d2 d3...]) 
B = zeros(size(A)) 
zeros(m, n,...,classname) 
zeros([m,n,...],classname)

描述

1、B = zeros(n)  返回一个n x n的零矩阵.如果n不是一个标量,将抛出错误。

2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。

3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。

4、B = zeros(size(A))  返回一个和A一样大小的零数组。

5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'

示例

x = zeros(2,3,'int8');

备注

MATLAB语言 没有一个维度声明 ; MATLAB 自动为矩阵 分配存储空间。 然而,对于 大型矩阵 , MATLAB程序 可能会 执行得更快 ,如果 零 函数用于 设置 一个 矩阵,其 元素将 产生 一次 , 或 行或列 的时间 预留 存储空间。例如

x = zeros(1,n); 
for i = 1:n, x(i) = i; end

 

4. mean()

 mean(A)

表示求矩阵A的均值,默认的是求各列的均值
如A =[1     2     6;
           6     7     2]
mean(A) =     3.5000    4.5000    4.0000
mean(A,1) = mean(A)

mean(A,2)是矩阵求各行的均值
如上述A矩阵,
mean(A,2) = [3  5]'

5.sortrows()

sortrows有三种用法:
B = sortrows(A)
B = sortrows(A,column)
[B,index] = sortrows(A,...)

我们先创建一个矩阵
A=floor(gallery('uniformdata',[6 7],0)*100);
A(1:4,1)=95;  A(5:6,1)=76;  A(2:4,2)=7;  A(3,3)=73
A =
    95    45    92    41    13     1    84
    95     7    73    89    20    74    52
    95     7    73     5    19    44    20
    95     7    40    35    60    93    67
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1
默认依据第一列的数值按升序移动每一行,如果第一列的数值有相同的,依次往右比较。例:
B = sortrows(A)
B =
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1
    95     7    40    35    60    93    67
    95     7    73     5    19    44    20
    95     7    73    89    20    74    52
    95    45    92    41    13     1    84

或是从某一列开始比较数值并按升序排序,例:
C = sortrows(A,2)
C =
    95     7    73    89    20    74    52
    95     7    73     5    19    44    20
    95     7    40    35    60    93    67
    95    45    92    41    13     1    84
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1

亦可以从某一列开始以降序排列,例:
D = sortrows(A, -4)
D =
    95     7    73    89    20    74    52
    76    61    93    81    27    46    83
    95    45    92    41    13     1    84
    95     7    40    35    60    93    67
    95     7    73     5    19    44    20
    76    79    91     0    19    41     1

如果要求每一列都按照升序排列
E=sort(A)

如果要求每一列都按照降序排列
F=-sort(-A)

 

6. find()

矩阵中某一列等于一个数的所有行

比如说找到2维矩阵里面第三列等于10的所有行

 

1

ir = find(A(:,3)==10)         % 返回行索引

 

1

iv = A(find(A(:,3)==10),:)   % 返回数值

 

7. eval()

功能就是将括号内的字符串视为语句并运行

比如 
eval('y1=sin(2)')和语句y1=sin(2)等价

多在循环中使用,可以对多个名字有规则的变量或文件进行操作,比如
for x=1:5
eval(['y',num2str(x),'=',num2str(x^2),';'])
end

8.  im2double()

double 就是简单地把一个变量的类型转换成double型,数值大小不变,比如一个unit8类型变量a=1,double(a)的结果还是6,不过现在a已经是double型了,在图像处理中,用的不多; 
常用的是im2double函数,如果输入是 uint8 unit16 或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间。
如果输入本身就是double类型,输出还是double类型,并不进行归一化。。
mat2gray是将图像矩阵归一化操作,常用的为A = im2uint8(mat2gray(image)),这样就将image矩阵转化为uint8类型的图像。

猜你喜欢

转载自www.cnblogs.com/wkwzn2019/p/13167313.html