Matlab中的基本数据类型

上传人:平*** 文档编号:16540796 上传时间:2017-11-08 格式:DOC 页数:7 大小:42.74KB
返回 下载 相关 举报
Matlab中的基本数据类型_第1页
第1页 / 共7页
Matlab中的基本数据类型_第2页
第2页 / 共7页
Matlab中的基本数据类型_第3页
第3页 / 共7页
Matlab中的基本数据类型_第4页
第4页 / 共7页
Matlab中的基本数据类型_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Matlab中的基本数据类型》由会员分享,可在线阅读,更多相关《Matlab中的基本数据类型(7页珍藏版)》请在金锄头文库上搜索。

1、Matlab 中有 15 种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。1、整型:(int8;uint8;int16 ;uint16;int32;uint32 ;int64 ; uint64)通过 intmax(class)和intmin(class) 函数返回该类整型的最大值和最小值,例如 intmax(int8)=127;2、浮点:(single;double )浮点数:REALMAX(double)和 REALMAX(single)分别返回双精度浮点和单精度浮点的最大值,REALMIN(double)和 REALMIN (single)分别

2、返回双精度浮点和单精度浮点的最小值。3、逻辑:(logical)Logical:下例是逻辑索引在矩阵操作中的应用,将 5*5 矩阵中大于 0.5 的元素设定为 0:A = rand(5);A(A0.5)=0;4、字符:(char)Matlab 中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个 ASCII 字符。如日期字符:DateString=9/16/2001 实际上是一个 1 行 9 列向量。构成矩阵或向量的行字符串长度必须相同。可以使用 char 函数构建字符数组,使用 strcat 函数连接字符。例如,命令 name = abc ; abcd 将触发错误警告,因为两个字

3、符串的长度不等,此时可以通过空字符凑齐如:name = abc ; abcd,更简单的办法是使用 char 函数: char(abc,abcd),Matlab 自动填充空字符以使长度相等,因此字符串矩阵的列纬总是等于最长字符串的字符数.例如 size(char(abc,abcd)返回结果 2,4,即字符串abc实际存在的是abc ,此时如需提取矩阵中的某一字符元素,需要使用 deblank 函数移除空格如 name =char(abc,abcd); deblank(name(1,:)。此外,Matlab 同时提供一种更灵活的单元格数组方法,使用函数 cellstr 可以将字符串数组转换为单元格

4、数组:data= char(abc,abcd)length(data(1,:) -? 4 cdata=cellstr(data)length(cdata1) -?3常用的字符操作函数blanks(n) 返回 n 个空字符deblank(s) 移除字符串尾部包含的空字符(string) 将字符串作为命令执行findstr(s1,s2) 搜索字符串ischar(s) 判断是否字符串isletter(s) 判断是否字母lower(s) 转换小写upper(s) 转换大写strcmp(s1,s2) 比较字符串是否相同strncmp(s1,s2,n) 比较字符串中的前 n 个字符是否相同strrep(s

5、1,s2,s3) 将 s1 中的字符 s2 替换为 s35、日期和时间Matlab 提供三种日期格式:日期字符串如1996-10-02 ,日期序列数如 729300(0000 年 1 月 1 日为1)以及日期向量如 1996 10 2 0 0 0,依次为年月日时分秒。常用的日期操作函数datestr(d,f) 将日期数字转换为字符串datenum(str,f) 将字符串转换为日期数字datevec(str) 日期字符串转换向量weekday(d) 计算星期数eomday(yr,mth) 计算指定月份最后一天calendar(str) 返回日历矩阵clock 当前日期和时间的日期向量 date

6、当前日期字符串now 当前日期和时间的序列数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 Doebilling: 127test: 3x3 double继续赋值可扩展该结构数组:pat

7、ient(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 函数 函数基本形式为:strArray = struct(field1,val1,field2,val2, .)例如:weather(1) = struct(temp, 72,rainfall, 0.0);weather(2) = struct(temp, 71,rainfall, 0.1);weather = repmat(st

8、ruct(temp, 72, rainfall, 0.0), 1, 3); weather = struct(temp, 68, 80, 72, rainfall, 0.2, 0.4, 0.0);(3)访问结构数据以下都是合法的结构数组访问命令:mypatients = patient(1:2) 获取子结构数据mypatients(1) 访问结构数据patient(2).name 访问结构数据中的特定字段patient(3).test(2,2) 访问结构数据中的特定字段(该字段为数组)bills = patient.billing 访问多个结构tests = patient(1:2).test

9、 提取结构数据转换成单元格数组使用结构字段的动态名称通过 structName.(expression_r_r_r)可以赋予结构字段名称并访问数据。例如字段名为expression_r_r_r、结构名为 structName,访问其中第 7 行 1 至 25 列数据可以使用命令:structName.(expression_r_r_r)(7,1:25)。例如,存在一个学生每周成绩数据结构数组,其数据通过以下方式建立:testscores.wang.week(1:25) = .95 89 76 82 79 92 94 92 89 81 75 93 .85 84 83 86 85 90 82 82

10、 84 79 96 88 98;testscores.chen.week(1:25) = .87 80 91 84 99 87 93 87 97 87 82 89 .86 82 90 98 75 79 92 84 90 93 84 78 81;即结构名为 testscores,字段使用每个学生的名称命名,分别为 wang 和 chen,每个学生下面包含名为 week 的成绩结构数组。现计算给定结构名称、学生名称和起止周数的平均分数。在命令窗口中输入 edit avgscore.m,输入以下代码后保存文件:function avg = avgscore(struct,student, first

11、, last)avg = sum(struct.(student).week(first:last)/(last - first + 1);在命名窗口中输入:avgscore(testscores, chen, 7, 22) 计算学生陈从第 7 周到第 22 周的平均分数。(4)添加和删除结构字段命令struct(index).(field)可添加或修改字段。如 patient(2).ssn = 000-00-0000 在结构 patient 中添加一个名为 ssn 的字段。删除字段使用 rmfield 函数,如 patient2 = rmfield(patient, name) 删除 nam

12、e 字段并产生新的结构。8、单元格数组:(cell)单元格数组提供了不同类型数据的存储机制,可以储存任意类型和任意纬度的数组。访问单元格数组的规则和其他数组相同,区别在于需要使用花括号访问,例如 A2,5访问单元格数组 A 中的第 2 行第 5 列单元格。 (1)构建单元格数组:赋值方法使用花括号标识可直接创建单元格数组,如:A(1,1) = 1 4 3; 0 5 8; 7 2 9;A(1,2) = abcd;A(2,1) = 3+7i;A(2,2) = -pi:pi/10:pi;上述命令创建 2*2 的单元格数组 A。继续添加单元格元素直接使用赋值如 A(2,3)=5即可,注意需使用花括号标

13、识。简化的方法是结合使用花括号(单元格数组)和方括号()创建,如 C = 1 2, 3 4; 5 6, 7 8;(2)构建单元格数组:函数方法Cell 函数。如:B = cell(2, 3);B(1,3) = 1:3;(3)访问数据通过索引可直接访问单元格数组中的数据元素,例如:N1,1 = 1 2; 4 5;N1,2 = Name;N2,1 = 2-4i;N2,2 = 7;c = N1,2d = N1,1(2,2)9、函数句柄函数句柄是用于间接调用一个函数的 Matlab 值或数据类型。在调用其它函数时可以传递函数句柄,也可在数据结构中保存函数句柄备用。通过命令形式 fhandle = fu

14、nctionname 可以创建函数句柄,例如 trigFun=sin,或匿名函数 sqr = (x) x.2;。使用句柄调用函数的形式是 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 中的图像数据类型转换MATLAB 中读入图像的数据类型

15、是 uint8,而在矩阵中使用的数据类型是 double 因此 I2=im2double(I1) :把图像数组 I1 转换成 double 精度类型;如果不转换,在对 uint8 进行加减时会产生溢出,可能提示的错误为:Function * is not defined for values of class uint8。图像数据类型转换函数默认情况下,matlab 将图像中的数据存储为 double 型,即 64 位浮点数;matlab 还支持无符号整型(uint8和 uint16);uint 型的优势在于节省空间,涉及运算时要转换成 double 型。im2double():将图像数组转换成 double 精度类型im2uint8():将图像数组转换成 unit8 类型 im2uint16():将图像数组转换成 unit16 类型

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号