转自:http://blog.sina.com.cn/s/blog_7071fc6f0100zkkh.html
Matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。
浮点数:REALMAX('double')和REALMAX('single')分别返回双精度浮点和单精度浮点的最大值,REALMIN('double')和REALMIN ('single')分别返回双精度浮点和单精度浮点的最小值。
3、逻辑:(logical)
4、字符:(char)
例如,命令 name = ['abc' ; 'abcd'] 将触发错误警告,因为两个字符串的长度不等,此时可以通过空字符凑齐如:name = ['abc ' ; 'abcd'],更简单的办法是使用char函数:char(‘abc’,’abcd’),Matlab自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.
例如size(char(‘abc’,’abcd’))返回结果[2,4],即字符串’abc’实际存在的是’abc ’,此时如需提取矩阵中的某一字符元素,需要使用deblank函数移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。
data= char(‘abc’,’abcd’)
常用的字符操作函数
blanks(n) 返回n个空字符
5、日期和时间
常用的日期操作函数
datestr(d,f) 将日期数字转换为字符串
6、结构
7、构建结构数组
(1)赋值方法
下面的赋值命令产生一个名为patient的结构数组,该数组包含三个字段:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];
在命令区内输入patient可以查看结构信息:
name: 'John Doe'
billing: 127
test: [3x3 double]
继续赋值可扩展该结构数组:
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];
赋值后结构数组变为[1 2]。
(2)构建结构数组:struct函数
例如:
weather(1) = struct('temp', 72,'rainfall', 0.0);
weather(2) = struct('temp', 71,'rainfall', 0.1);
(3)访问结构数据
mypatients = patient(1:2) 获取子结构数据
mypatients(1) 访问结构数据
patient(2).name 访问结构数据中的特定字段
patient(3).test(2,2) 访问结构数据中的特定字段(该字段为数组)
bills = [patient.billing] 访问多个结构
tests = {patient(1:2).test} 提取结构数据转换成单元格数组
使用结构字段的动态名称
例如,存在一个学生每周成绩数据结构数组,其数据通过以下方式建立:
testscores.wang.week(1:25) = ...
testscores.chen.week(1:25) = ...
即结构名为testscores,字段使用每个学生的名称命名,分别为wang和chen,每个学生下面包含名为week的成绩结构数组。
function avg = avgscore(struct,student, first, last)
(4)添加和删除结构字段
命令[struct](index).(field)可添加或修改字段。如patient(2).ssn = '000-00-0000' 在结构patient中添加一个名为ssn的字段。
删除字段使用rmfield函数,如patient2 = rmfield(patient, 'name') 删除name字段并产生新的结构。
8、单元格数组:(cell)
访问单元格数组的规则和其他数组相同,区别在于需要使用花括号{}访问,例如A{2,5}访问单元格数组A中的第2行第5列单元格。
(1)构建单元格数组:赋值方法
使用花括号标识可直接创建单元格数组,如:
A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};
(2)构建单元格数组:函数方法
Cell函数。如:
B = cell(2, 3);
B(1,3) = {1:3};
(3)访问数据
通过索引可直接访问单元格数组中的数据元素,例如:
N{1,1} = [1 2; 4 5];
N{1,2} = 'Name';
N{2,1} = 2-4i;
N{2,2} = 7;
c = N{1,2}
d = N{1,1}(2,2)
9、函数句柄
使用句柄调用函数的形式是 fhandle(arg1, arg2, ..., argn) 或 fhandle()(无参数)。如:
trigFun(1)。例:
function x = plotFHandle(fhandle, data)
plot(data, fhandle(data))
plotFHandle(@sin, -pi:0.01:pi)
数据类型转换如C语言中的强制类型转换相似e.g.:
y=9;
z=double(y);
MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此I2=im2double(I1) :把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'。