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 |
|
1 |
|
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类型的图像。