学习笔记

来源:互联网 发布:淘宝5金冠店铺是那个 编辑:程序博客网 时间:2024/05/17 03:58

字符和字符串

MATLAB中一个字符串是存储在一个行向量中的文本,这个行向量中的每一个元素代表一个字符。实际上,元素中存放的是字符的内部代码,即ASCII码。由于字符串是以向量的形式来存储的,因此可以通过它的下标对字符中的任何一个元素进行访问。字符矩阵也可以通过下标索引进行访问,但是矩阵的每行字符数必须相同。

String = 'Every good boy dose fun.';size(String);ans =    1      24

ans表示String为1x24的矩阵,空格和句号亦为元素,字符+空格+句号=24个元素。


获取String字符串的第7~10个元素

u=String(7:10)u=  good
获取第10~7个元素
u=String(10:7) <span style="color:#CC0000;">Empty matrix: 1-by-0</span>

如果要取反向元素,这样是错的,应该这样写:

u=String(10:-1:7)u=  doog

字符串内的单引号是右两个连续的单引号来表示的

string='It''s not the manual!'string=  It's not the manual!

字符串的链接

u='Hello,'v='world!'w=[u v]w=  Hello,world!

函数句柄

我对函数句柄的理解是:函数句柄就是一个包含了函数名的变量,使用函数句柄即为调用句柄表示的函数。

注意:创建函数句柄需要用到操作符@

f=@cosf=  @coscos(0)ans=       1.0000f(0)ans=       1.0000

在上面的例子里,f等同于cos函数,调用f即为调用cos

>>x = 0 : 0.25*pi : 2*pix=      0    0.7854    1.5708    2.3562    3.1416    3.9270    4.7124    5.4978    6.2832>>f(x)ans=      1.0000    0.7071    0.0000   -0.7071   -1.0000   -0.7071   -0.0000    0.7071    1.0000


函数句柄的操作函数

1.functions(f)  

返回一个结构体,存储了函数的名称、函数类型(simple或overloaded),以及函数M文件的位置

>>f=@exp;>>functions(f)ans=   funciton: 'exp'           type: 'simple'           file: ''
2.func2str(f)

将函数句柄转换为函数名称字符串

3.str2func(str)

将字符串代表的函数转换为函数句柄

4.save filename.mat funhandle

将函数句柄保存在*.mat文件中

5.load filename.mat funhandle

把*.mat文件中存储的函数句柄加载到工作区

6.isa(var,'function_handle')

检测变量var是否是函数句柄,真返回1,假返回0

>>isa(f,'function_handle')ans=    1

7.isequal(funhandlea,funhandleb)

检测两个函数句柄是否对应于同一个函数

结构体


创建结构体的两种方法:

(1)通过字段复制创建结构体。格式为:结构体名称.字段名称

>> student.name='sam';>>student.grade=6;>>student.subject={'chinese','math','english'};student =        name: 'sam'      grade: 6    subject: {'chinese'  'math' 'english'}

(2)利用struct函数创建结构体。

        struct函数的句法形式为:StrArray = struct('field1', var1, 'field3', var2,...,'fieldn', varn)

>> scedule(2)=struct('Day','Thursday','Time','15:00','Number','18')scedule = 1x2 struct array with fields:    Day    Time    Number>> scedule(1)ans =        Day: []      Time: []    Number: []>> scedule(2)ans =        Day: 'Thursday'      Time: '15:00'    Number: '18'

结构体第一个元素scedule(1)没有赋值,因此scedule(1)所有字段均为空数组。

函数repmat(A,M,N)表示,创建每个元素均为A的MXN矩阵

>> scheduleArray=repmat(struct('Day','Thursday','Time','15:00','Number','18'),2,2)scheduleArray = 2x2 struct array with fields:    Day    Time    Number>> scheduleArray(1,2)ans =        Day: 'Thursday'      Time: '15:00'    Number: '18'

结构体数组

>> newArray=struct('Day',{'Thursday','Firday'},'Time',{'15:00','9:00'},'Number',{18,6})newArray = 1x2 struct array with fields:    Day    Time    Number>> newArray(1)ans =        Day: 'Thursday'      Time: '15:00'    Number: 18>> newArray(2)ans =        Day: 'Firday'      Time: '9:00'    Number: 6

数组类型

在MATLAB中,数组的定义是广义的,数组的元素可以是任意的数据类型,例如可以是数组、字符串、指针等。

对变量赋值创建数组

>> array=[1 2 3 4 5 6 ]array =     1     2     3     4     5     6

使用冒号":"来代表一系列数值

(1)array=i:k

创建从i开始,步长为1,到k结束的数字序列

>> array=1:6array =     1     2     3     4     5     6
(2)array=i:j:k

创建从i开始,步长为j,到k结束的数字序列

>> array=1:2:7array =     1     3     5     7



0 0
原创粉丝点击