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')分别返回双精度浮点和单精度浮点的最小值。

3、逻辑:(logical)

Logical:下例是逻辑索引在矩阵操作中的应用,将5*5矩阵中大于0.5的元素设定为0:

A = rand(5);

A(A>0.5)=0;

4、字符:(char)

Matlab中的输入字符需使用单引号。字符串存储为字符数组,每个元素占用一个ASCII字符。如日期字符:DateString=’9/16/2001’

实际上是一个1行9列向量。构成矩阵或向量的行字符串长度必须相同。可以使用char函数构建字符数组,使用strcat函数连接字符。

例如,命令 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,:))。

此外,Matlab同时提供一种更灵活的单元格数组方法,使用函数cellstr可以将字符串数组转换为单元格数组:

data= char(‘abc’,’abcd’)

length(data(1,:)) ->? 4

cdata=cellstr(data)

length(cdata{1}) ->?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(s1,s2,s3) 将s1中的字符s2替换为s3

5、日期和时间

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 当前日期字符串

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 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函数

函数基本形式为:strArray =

struct('field1',val1,'field2',val2, ...)

例如:

weather(1) = struct('temp',

72,'rainfall', 0.0);

weather(2) = struct('temp',

71,'rainfall', 0.1);

weather = repmat(struct('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}

提取结构数据转换成单元格数组

使用结构字段的动态名称

通过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 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, 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') 删除name字段并产生新的结构。

8、单元格数组:(cell)

单元格数组提供了不同类型数据的存储机制,可以储存任意类型和任意纬度的数组。

访问单元格数组的规则和其他数组相同,区别在于需要使用花括号{}访问,例如A{2,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}即可,注意需使用花括号标识。简化的方法是结合使用花括号(单元格数组)和方括号()创建,如C

= {[1 2], [3 4]; [5 6], [7 8]};

(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、函数句柄

函数句柄是用于间接调用一个函数的Matlab值或数据类型。在调用其它函数时可以传递函数句柄,也可在数据结构中保存函数句柄备用。通过命令形式

fhandle = @functionname 可以创建函数句柄,例如 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中读入图像的数据类型是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类型

//

%假设你的文件名在c盘 叫test.txt

fid=fopen('c:\test.txt');

data=textscan(fid,'%s','delimiter','\n');%把数据按行读入

fclose(fid);%关闭文件

data=data{1,1};

A=textscan(data{1},'%n','delimiter',' ');把第一行按空格为分割赋给A

B=textscan(data{2},'%n','delimiter',' ');同上B

C=textscan(data{3},'%n','delimiter',' ');同上C

A=A{1};B=B{1};C=C{1};把A,B,C由cell转成向量

%这样的话无论这三行分别有多少个数据都可以的。

截取字符串部分:str(2:length(str)-1))

matlab里数据类型转换,Matlab数据类型及转换相关推荐

  1. matlab里数据类型转换,Matlab数据类型及转换(Matlab data type and conversion).doc

    Matlab数据类型及转换(Matlab data type and conversion) Matlab数据类型及转换(Matlab data type and conversion) Matlab ...

  2. pyspark 数据类型转换_pyspark 数据类型及转换

    Spark 数据类型 Data Types Spark SQL and DataFrames support the following data types: Numeric types ByteT ...

  3. matlab强制数据类型转换

    >> x=uint8(8); >> class(x) %查看类型 ans = uint8 >> y=double(x); %转双精度 >> class( ...

  4. Numpy属性dtype的转换(数据类型转换):unit8和float32转换

    参考Numpy属性dtype的转换(数据类型转换):unit8和float32转换 - 云+社区 - 腾讯云 查看数据类型 print(image.dtype) unit8 转换成 float32 先 ...

  5. 在matlab中怎样把图片转化为数据类型,matlab图像数据类型转换

    uint 8:无符号的8位(8bit)整型数据(unit 都是存储型) int :整型数据 1.在MATLAB中,数值一般都采用double型(64位)存储和运算. 2.为了节省存储空间,MATLAB ...

  6. matlab 的字符类型转换,数据类型转换 - MATLAB Simulink - MathWorks 中国

    将文本转换为数值数组.文本可以表示浮点值.日期和时间,以及十六进制和二进制数字.如果文本表示日期和时间,则可以将文本转换为日期时间或持续时间值. 将数值转换为文本.文本可以表示浮点值,其格式可以使用或 ...

  7. 数据类型,数据类型转换以及进制转换

    一,字面值常量 *字符串常量 用双引号括起来的内容 *整数常量 所有整数 *小数常量 所有小数 *字符常量 用单引号扩起来的内容,里面只能放单个数字,单个字母或单个符号 (''中放的必须是单个字符,1 ...

  8. adams数据导出matlab,adams数据导入matlab

    Matlab 数据导入方法在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文 件.MATLAB 使用多种格式打开和保存数据.本章将要介绍 MATLAB 中文件...... adam ...

  9. matlab提取数据画图,matlab提取excel表格数据画图-如何将Excel中的数据导入MATLAB并在MATLAB中画出图......

    在matlab上如何导入excel表格然后画图 工具:matlab 2018b 1.打开matlab,点击主页下面导入数据,可以导入excel数据,在此将自己命名的huitushuju文件导入: 2. ...

  10. matlab tcpip数据解析,Matlab数据输出、从MATLAB 以tcpip形式传输数据到 vvvv

    Matlab数据输出..从MATLAB 以tcpip方式传输数据到 vvvv 想要使用vvvv进行控制,但是数据是从matlab里算出的 就想到tcp/ip方式连接 查找很多资料,可大多数都是在MAT ...

最新文章

  1. 设计一个带有getmin功能的栈,保证时间复杂度在O(1)
  2. 疫情数据可视化讨论,作为数据分析师的我真是太“南”了!(附代码)
  3. 第二周作业-影评、靶机和攻击机的安装与配置、kali的配置、DNS解析
  4. 安卓Android Studio开发IDE的安装
  5. 文件包含——php伪协议(五)
  6. 请不要对我说“你要马上把这个小问题修改好”
  7. Leaflet笔记-把leaflet-tilelayer-wmts移植到vue cli中(含思路)
  8. 小脑袋智能推广软件360专版
  9. gdal1.6linux编译,VS2015下编译64位GDAL总结
  10. ELK logstash的grok 自定义正则匹配日志
  11. 银联网关支付,退款java实现
  12. 语法长难句【刘晓艳】英语
  13. SqlServer 2008还原数据库步骤
  14. 远程桌面提示“用户帐户限制(例如,时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。”
  15. php选课删除选课成绩统计,高校选修课平时成绩管理系统
  16. 安排,2020新kafka视频教程零基础到精通
  17. 介绍java 8 的 Period 和 Duration 类
  18. php mysql 更新多条数据_php update 多条数据库
  19. C#之四十九 游戏编程周每日总结
  20. 基于安卓的民宿客栈预定App丨有微信小程序

热门文章

  1. 单点登录系统设计分析
  2. Filter中获取传递参数(解决post请求参数问题)
  3. 逻辑回归算法原理MATLAB,逻辑回归算法(MATLAB)
  4. pc模式 华为mate30_华为Mate30手机怎么投屏到电脑上呢
  5. MFC学生信息管理系统
  6. 图像Radon变换与傅里叶变换(matlab)
  7. markdown下载
  8. H5调用手机摄像头和相册更换头像
  9. 三菱FX5U和变频器走485通讯连接,程序是FB块写好的,硬件一样可以直接调用
  10. 微商新手如何选产品?史上最详细操作指南!