数学建模与MATLAB-2

    技术2023-09-10  83

    1、MATLAB的简介

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

    2、MATLAB的数据类型

    MATLAB共有15中数据类型:包含八种整数类型 和 单精度浮点类型、双精度浮点类型、逻辑型、单元组型、结构体类型、字符串类型 以及 函数句柄。 总的来说,和C的语法还是相当类似的。 好像没有提供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的数据类型,内容应该来说还是比较简单的哦! 本专栏将于近期不断更新,欢迎大家交流指正吐槽!!

    还是那句话 让我看看是哪个憨憨没有关注

    Processed: 0.009, SQL: 9