学习笔记

字符和字符串

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=@cos

f=
  @cos

cos(0)

ans=
       1.0000

f(0)

ans=
       1.0000

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

>>x = 0 : 0.25*pi : 2*pi

x=
      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:6

array =

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

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

>> array=1:2:7

array =

     1     3     5     7



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值