数学建模与MATLAB-2

1、MATLAB的简介

略略略
关于这个。。
你为什么不去问问神奇的海螺呢?
在这里插入图片描述
初学这个的话首先要知道MATLAB的帮助系统是相当强大的,对于任何学习使用MATLAB的人都应该熟练地掌握它的使用。

2、MATLAB的数据类型

MATLAB共有15中数据类型:包含八种整数类型 和 单精度浮点类型、双精度浮点类型、逻辑型、单元组型、结构体类型、字符串类型 以及 函数句柄。 总的来说,和C的语法还是相当类似的。
CSDN好像没有提供MATLAB的代码片段格式,大家见谅!
例如下面的一段代码

clear all;
a1=int8(6)
a2=int16(-20)
a3=uint32(100)
a4=uint64(200)
b1=single(3.5)
b2=12
c1=true
c2{1,1}=100
c3='hello'
c4.name='robin'
d=@cos

我们在命令行窗口输入whos 会有它们的数据类型

就像这张图所示当我们不知道这里的c2的cell类型是什么意思时
我们可以在命令行输入help cell 即可获得cell的相关描述
在这里插入图片描述帮助系统的功能不可谓不强大!!
这里数据类型形式和C语言高度类似,这里就不做过多的介绍。
倒是MATLAB的取整函数还是有点意思的,我们这里来看一下:浮点数的取整函数共有4种,分别是round、fix、floor和ceil。
其中,
round是向最接近的整数取整,如果小数为0.5则取绝对值大的整数;
fix是向零取整;
floor是取不大于该数的最近整数;
ceil是取不小于该数的最近整数。
这些从英文单词的字面意思上便可以清楚明白。
这里我们也给出示例

clear all;
a1=round(2.5)
a2=round(-2.4)
a3=round(-2.5)
b1=fix(-3.6)
b2=fix(-3.5)
c1=floor(4.9)
c2=floor(-4.2)
d1=ceil(4.2)
d2=ceil(-4.4)

结果为:
a1 = 3
a2 = -2
a3 = -3
b1 = -3
b2 = -3
c1 = 4
c2 = -5
d1 = 5
d2 = -4

2.1、关于复数

复数是对实数的补充,包含实部和虚部两部分。我们可以使用赋值语句产生复数,也可以使用complex()函数来产生复数。
下面来看看复数的常用函数:
complex(a,b) 构建复数,a为实部,b为虚部
real (z)得到复数z的实部
imag (z)得到复数z的虚部
abs (z)得到复数z的模
angle (z)得到复数的角度
conj (z)得到复数的共轭复数

2.2、数据的显示格式

可以通过format()函数改变数据的显示格式,并且会一直有效,直到下一次再次使用format()函数
这个内容在这里不做过多的讲解,感兴趣的有需要的又可以自己去了解哦!

2.3、逻辑类型

这里的知识点和C语言部分的高度相似,我们不做过多的介绍,我们主要看一个例子了解一下它和C语言部分的异同即可:

clear all;
a1=true
a2=false
a3=true(3,4)
a4=false(3)

结果为:
在这里插入图片描述从这里我们看出,a3和a4分别是一个34和33的逻辑数组,这是一个比较有特色的地方
MATLAB中还可以使用logical()函数将一些数值转化为逻辑型,非零的转化为1,零还为零,这个与C语言部分一致。

2.4、字符和字符串

这里的内容和C语言的也差不多,唯一的区别就是MATLAB对中文有着很好的支持效果。我们拿一个例子来看一下:

clear all;
a='My name is 张三'
b=char([65 66 67 68])
c=int8('hello')
d='张'

运行结果:
在这里插入图片描述
这里我们看一下d,可以看出来MATLAB对于中文的支持效果。

2.5、函数句柄

这种数据结构比价特殊,在MATLAB中,通过函数句柄来间接调用函数,函数句柄的数据结构为function_handle。函数句柄可以通过符号@后跟函数名来创建。例如,fhandle=@cos,创建了函数cos()函数的函数句柄,以后就可以通过fhandle 来间接调用cos()。
这里还有一些常用的函数句柄的函数:
在这里插入图片描述这里我也给出几个例子给大家看一下:

clear all;
f1=@char
s1=func2str(f1)
f2=str2func(s1)
functions(f1)
isa(f1,'function_handle')
isequal(f1,f2)

运行结果:
在这里插入图片描述
结果都是“真”

2.6、单元数组类型

单元数组是一种比较特殊的数据类型,每一个元素都是以单元形式存在。在MATLAB中 ,使用大括号来创建单元数组,也可以使用cell()函数来创建单元数组。在获取单元数组元素时,也是用大括号来表示下标。
我们使用例子来进行讲解:

clear all;
c={'中国','China';[1 2 3 4 5],100} //元素使用逗号分隔,换行使用分号
c{1,1}
c{2,1}
c{2,2}=[]

运行结果:
在这里插入图片描述celldisp()用于显示单元数组的内容,例如

clear all;
c={eye(2),'China';[1:4],100}
celldisp(c)
celldisp(c,'mycell') //此外在运行结束时可以采用他的另外一个名字,例如mycell

cellplot()将单元数组以彩色图形进行显示

clear all;
c={'中国','China';[1:4],100}
figure;
out=cellplot(c,'legend')

这是他的运行结果:
在这里插入图片描述我们还可以对单元数组的元素进行更改和添加和删除

clear all;
c={'中国','China';[1:4;2:5],10}
c{2,4}=100                       		//单元数组的扩充
c(1,:)                            		//第一行元素
c(:,3)=[]                         		//删除第三列
d={'北京','Beijing';[],3}
e=[c,d]                           	//单元数组的合并
e(2,:)=[]                         //删除第二行

其显示结果为:
在这里插入图片描述
在对单元数组进行扩充时,没有赋值的元素默认为空
接下来来看,iscell()函数和num2cell()函数

clear all;
a=[2.3 4.5 9.2;3.5,3.2 8.5]   
c=num2cell(a)				//将矩阵转换为单元数组
iscell(a)
iscell(c)

num2cell()是将矩阵转换为单元数组 而 iscell()则是判断对象是否 为单元数组
在这里插入图片描述我们再来看函数cell2struct()
这个函数是将单元数组转换为一个结构体变量

clear all;
c={'Dr. Zhang',1.80,20110001,[89 90 96]}
fields={'name','height','num','score'}  //结构体成员变量
s=cell2struct(c,fields,2) 

他的运行结果也是非常公整的:
在这里插入图片描述

2.7、结构体数据类型

MATLAB中的结构体数据类型类似于C语言中的结构体数据。
每个成员变量用指针操作符“.”来表示
他的常用函数如下所示
在这里插入图片描述我们也可以在命令行窗口直接创造一个结构体变量
在这里插入图片描述在这里插入图片描述第二个结构体变量的gender没有设置,所以为空
我们也可以使用函数来创造结构体变量

clear all;
s1=struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4] [1:4]})
s1(1)
s1(2)

他的运行结果是:
在这里插入图片描述还有更多的函数,我就不一一介绍了 仅仅给出部分经典的例子
大家平时需要的话,随时查随时用即可
在这里插入图片描述下面这是rmfield()的例子

clear all;
s1=struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4] [1:4]})
s2=rmfield(s1,'color')
s3=rmfield(s1,{'type','color'})  //要删除两个成员变量时,需要用大括号给括起来

以下是isstruct()函数的例子

clear all;
s=struct('one',1,'two',2)
f1=isstruct(s)
f2=isfield(s,'one')
f3=isfield(s,'three')
f4=isfield(s,{'one','pi','Two','three'})

与上面相同的,要判断多个成员变量时,需要用大括号括起来,返回的结果也将是一个数组

3、总结

不知不觉之间,Nathan本专栏的第二篇博文也已经写完了!
本文主要讲了MATLAB的数据类型,内容应该来说还是比较简单的哦!
本专栏将于近期不断更新,欢迎大家交流指正吐槽!!

在这里插入图片描述
还是那句话
让我看看是哪个憨憨没有关注
在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值