关于MATLAB的基本描述
matlab(matrix laboratory)对于技术运算来说是一种高性能的语言,它以易于应用的环境集成了计算、可视化和编程。
主要应用于:数学和计算、算法开发、数据获取、建模和原型设计、数据分析研究和可视化、科学和工程图形、应用开发(包括图形用户界面的构建)。
MATLAB可调用c、c++、Fortran这类非交互式语言所编写的程序。
matlab中基本的数据类:如下。
double 双精度浮点数。图像处理中的所有的数据计算都可以用double类来进行,是最常用的数据类。8比特每像素。
unit8 无符号8比特整数。常用,因为数字图像一般是8bit,生活中最常见。1比特每像素。
unit16 无符号16比特整数。2比特每像素。
int8 有符号8比特整数。1比特每像素。
int16 有符号16比特整数。2比特每像素。
single 单精度浮点数。4比特每像素。
char 字符,用来表示Unicode字符。每个字符串都是1*n字符矩阵。2比特每像素。
logical 值为0,1.1比特每像素。
图像类型:
亮度图像,例如[0,255]....灰度值。
二值图像,灰度由0和1构成,可以由B=logical(A),将不是0的变成1,0仍然是0。
索引图像,待补充。
RGB图像,待补充。
数据类型之间的转换:强制类型转换,例如B=unit8(A).将A转化为unit8型。
图像类和数据类的转化,例如
B=im2unit8(A),将图像转化为unit8类型。
特例mat2gray,将double转化为范围为[0,1]的归一化矩阵,g=mat2gray(A,[Amin,Amax])将A归一化,在Amin之下的变为0,Amax之上的变为1。若不规定Amin和Amax,则将矩阵最小最大值自动定义为。
B=im2bw(A,Threshold),阀值法,之下变为0,之上变为1.不说明threshold,默认为0.5.
数组索引:
v=[1 3 5 7 9]
则v(2)=3;v(1:3)=1 3 5;v(3:end)=5 7 9;v(1:2:end)=1 5 9;v([1 4 5])=1 7 9;
x=linspace(a,b,n)产生一个有n个元素的行向量x,n均分区间[a,b]。
矩阵索引:
A=[1 2 3;4 5 6;7 8 9]
则A(2,3)=6;A(:,3)=第三列元素;A(2,:)产生第二行元素;A(1:2,1:3)提取矩阵的前两行三列。A(end,end)=9;A([1 3],[2 3])=[2 3;8 9];
B(:,3)=0,将第三列全部变化为0.
A(:)将矩阵所有元素排成一列,这在求和很有用,例如sum(A(:))就是对矩阵求和。
图像垂直翻转:B=A(end:-1:1,:);
截取图像的一部分:B=A(128:327,213:321);
图像的二次取样(图像缩小):B=A(1:2:end;1:3:end);
选取图像中间水平扫描线:plot(A(512,:));
给出矩阵的行数:m=size(A,1);给出矩阵的列数n=size(A,2)。例如
选取图像中间垂直扫描线plot(A(size(A,1)/2,:));
一些重要的标准数组:
生成m*n的double型0矩阵:zeros(m,n);
生成m*n的double型1矩阵:ones(m,n);
生成m*n的logical型1/0矩阵:true/false(m,n);
生成m*m的魔方型矩阵:magic(m),其行和列和主对角元素和均相等,元素为整数。
生成m*n的随机矩阵:rand(m,n);元素在[0,1]之间。
生成元素正态分布的m*n矩阵:randn(m,n);元素正态分布,均值为0,方差为1.