MATLAB学习笔记(1)

1.MATLAB命令行下的换行输入方法

    (1).可以在该行输入语句后加空格然后...即可。(用于续接一行内容)

    (2).按下Shift+Enter即可换行。(用于希望先输入多条语句,然后再同时顺序执行它们)

2.MATLAB的基本数据类型

    MATLAB中的基本数据类型包括数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。

2.1数值类型

    (1).未加说明时与特殊定义时,MATLAB对所有数值按照双精度浮点数类型进行存储和操作。
>> x = 5;
>> y = 2/5;
>> z = 0.2687;
>> m = 0;
>> whos
  Name      Size            Bytes  Class     Attributes

  m         1x1                 8  double              
  x         1x1                 8  double              
  y         1x1                 8  double              
  z         1x1                 8  double              
    (2).在MATLAB中,单精度浮点数类型不能与整数类型进行算术运算。
>> c = single(6.02);
>> d = 7.36;
>> n = int16(10);
>> result = c * n
错误使用  .* 
整数只能与相同类的整数或标量双精度值组合使用。
 
>> result = d * n

result =

     74

2.2逻辑类型

    与C/Java等编程语言不同点之一是不等于的关系操作符是~=,而非!=

2.3字符和字符串

    (1).字符串内各元素存放的是各个字符的ASCII码值。
>> str = 'Hello world.';
>> nstr = str + 2.5

nstr =

   74.5000  103.5000  110.5000  110.5000  113.5000   34.5000  121.5000  113.5000  116.5000  110.5000  102.5000   48.5000
    (2).字符串内的单引号由两个连续的单引号来表示。
>> String = 'I''m a goog boy.'

String =

I'm a goog boy.
    (3).可以直接将字符串用数组方式来实现连接。
>> A = 'Hell0 ';
>> B = 'world!';
>> C = [A, B]

C =

Hell0 world!

2.4函数句柄

    函数句柄即函数的首地址,暂时我是这样理解的。

2.5结构体类型

    2.5.1结构体的创建

    (1).可以通过字段赋值来逐个给结构体中的成员变量赋值。
>> Student.name = 'Amy';
>> Student.age = '20';
>> Student.height = '168';
>> Student.weight = '55';
>> Student

Student = 

      name: 'Amy'
       age: '20'
    height: '168'
    weight: '55'

    (2).可以利用struct函数来创建结构体。
>> newArray = struct('Day', {'Thursday','Friday'},'Time', {'15:00','21:00'},'Number', {12});
>> newArray

newArray = 

1x2 struct array with fields:

    Day
    Time
    Number

>> newArray[1]
 newArray[1]
         |
错误: 圆括号或方括号不对称或异常。
 
>> newArray(1)

ans = 

       Day: 'Thursday'
      Time: '15:00'
    Number: 12

>> newArray(2)

ans = 

       Day: 'Friday'
      Time: '21:00'
    Number: 12

在这里,数组的下标是用()而非[]。

2.6数组类型

    在MATLAB中可以使用:来代替一系列数值,比如在定义数组时,用以生成从a到b,步长为1的数组,其格式为:
数组名 = a:b
>> Array = 4:10

Array =

     4     5     6     7     8     9    10
    需要设置步长时,只需在中间加一个参数即可,格式为:
数组名 = a:c:b;%步长为c
例如:
>> Array = 1:2:20

Array =

     1     3     5     7     9    11    13    15    17    19
    也可以使用linspace函数来创建线性序列和逻辑序列。其应用的两种格式为
数组名 = linspace(起始值, 结束值)%这个方法默认生成100个元素。
数组名 = linspace(起始值, 结束值, 元素个数)
>> Array = linspace(1,11,11)

Array =

     1     2     3     4     5     6     7     8     9    10    11

2.7单元数组类型

    单元数组是一种不限制元素类型的广义矩阵(维数不限制)。组成单元数组的每一个元素称为一个单元。

2.7.1单元数组的创建

    (1).使用赋值语句创建单元数组。其使用花括号{}来界定,使用逗号,或空格来分隔每一个单元,使用分号;来分行。
>> C = {'x', [1,3,6];10, pi}

C = 

    'x'     [1x3 double]
    [10]    [    3.1416]
    (2).利用cell函数来创建空单元数组,其格式为:
单元数组名 = cell(行数, 列数)%这是一般二维数组的函数,若更多维则继续添加参数(该维度的长度)即可。
>> a = cell(2,2)

a = 

    []    []
    []    []

2.7.2单位数组的访问

    对于单元数组C,其访问包括对寻访单元与单元中的内容的访问。第m行第n列的单元数组外标识的访问是通过C(m, n)格式访问,第m行第n列的单元的访问是通过C{m, n}格式进行。
>> C{1, 1}

ans =

x

>> C(1, 1)

ans = 

    'x'

2.7.3单元数组的操作

    (1).单元数组的合并与结构体的合并类似,直接{}内连接即可
>> C = {'x', [1,3,6];10, pi}

C = 

    'x'     [1x3 double]
    [10]    [    3.1416]

>> D = {25; 'MATLAB'}

D = 

    [25]
    'MATLAB'

>> T = {C D}

T = 

    {2x2 cell}    {2x1 cell}
    (2).单元数组中指定单元的删除,只需要将空矩阵赋值给该单元即可。
示例略
    (3).单元数组的形状改变,需使用reshape函数,其格式如下:
更改后单元数组名 = reshape(要改变的单元数组名, 改变后的行数, 改变后的列数) 
    但应注意的是,reshape前后单元数组的元素个数不能改变。
>> C = {'x', [1,3,6];10, pi};
>> X = reshape(C, 1, 3)
错误使用 reshape
要执行 RESHAPE,请勿更改元素数目。
 
>> X = reshape(C, 1, 4)

X = 

    'x'    [10]    [1x3 double]    [3.1416]

2.8map容器类型

2.8.1map类型概述

    map即为映射的意思,即将map的键(key)映射为一个数据对象(value),因而可以将其理解为一种快速查找数据结构的方式。对于一个map元素进行寻访的索引称为“键”。一个键可以是以下任何一种数据类型:
    (1).1*N的字符串;
    (2).单精度或双精度的实数标量;
    (3).有符号或无符号标量整数。
    这些键与其对应的数据存储在map中。且各键属性需要一致!map类的对象具有三种属性,包括Count(表示map中key/value对的总数)、KeyType(键的类型)和ValueType(值的类型)通过“map名.属性名”即可查看属性值。

2.8.2map对象的创建

    map对象通过其构造函数来创建,其格式如下:
map对象名 = containers.Map({键1, 键2, ……}, {值1, 值2, ……})
map对象名 = containers.Map() %用于生成空的map对象
>> mapObj = containers.Map({'小明', '小红'}, {15010230014, 15070150220})%姓名到学号的简单映射

mapObj = 

  Map (带属性):

        Count: 2
      KeyType: char
    ValueType: double

>> mapObj.Count

ans =

                    2

>> mapObj.KeyType

ans =

char

>> mapObj.ValueType

ans =

double

2.8.3查看/读取map对象

    (1).查看map对象,可以通过keys函数与values函数实现。
    (2).读取map对象可通过以下格式实现:
返回值 = map对象名(键值)
    (3).若要对多个键值进行访问,可以使用values函数,格式如下:
返回数组名 = values(map对象名, {键1, 键2, ……})
>> mapObj = containers.Map({'小明', '小红', '小亮'}, {150102, 150707, 150209});
>> keys(mapObj)

ans = 

    '小明'    '小红'    '小亮'

>> values(mapObj)

ans = 

    [150102]    [150707]    [150209]

>> number_x = mapObj('小明')

number_x =

      150102

>> numbers = values(mapObj, {'小红', '小亮'})

numbers = 

    [150707]    [150209]

2.8.4map对象的编辑

    (1).从map对象中删除keys/values对。一般使用remove函数删除,其调用格式为:
remove(map对象名, 键名)
    (2).从map对象中增添keys/values对。添加时,要确保新加入键的类型必需要与其他键的类型一致,其格式如下:
map对象名(新键名) = 新键值
    (3).修改keys。若要在保持值不变的情况下修改键名,只能采用先删除该键值对,然后添加一个新的键值对的方法。
    (4).修改values。直接通过赋值操作,覆盖掉原有值即可。
>> mapObj = containers.Map({'小明', '小红', '小亮'}, {150102, 150707, 150209});
>> remove(mapObj, '小亮')

ans = 

  Map (带属性):

        Count: 2
      KeyType: char
    ValueType: double

>> mapObj('小刚') = 150104;
>> mapObj('小红') = 140108;
>> keys(mapObj)

ans = 

    '小明'    '小刚'    '小红'

>> values(mapObj)

ans = 

    [150102]    [150104]    [140108]











你可能感兴趣的:(MATLAB)