1.Matlab变量命名规则

  • 变量名区分大小写
  • 变量名长度不超过63位(Matlab R2012a 32bit和64bit计算机上测试结果)
  • 变量名以字母开头, 可以由字幕、数字和下划线组成,但不能使用标点
  • 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义

2.Matlab数据类型

  • 数字
  • 字符与字符串
  • 矩阵
  • 元胞数组
  • 结构体

3.注释方法

%% (两个%加一个空格)

4.矩阵

4.1矩阵的简单用法

示例:

A=[1 2 3;4 5 6;7 8 9]
B=A'
C=A(:)
D=inv(A)   %%inv是矩阵求逆命令

结果:

>> A=[1 2 3;4 5 6;7 8 9]
B=A'
C=A(:)
D=inv(A)

A =

     1     2     3
     4     5     6
     7     8     9


B =

     1     4     7
     2     5     8
     3     6     9


C =

     1
     4
     7
     2
     5
     8
     3
     6
     9

警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND =  2.202823e-18。 
 

D =

   1.0e+16 *

    0.3153   -0.6305    0.3153
   -0.6305    1.2610   -0.6305
    0.3153   -0.6305    0.3153

>> 

4.2随机数矩阵

rand、randi,randn的区别:

  • rand生成随机分布的伪随机数(分布在0~1之间)
    • 主要语法:
      • rand(m,n)生成m行n列的均匀分布的伪随机数
      • rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是‘single’
      • rand(RandStream,m,n)利用指定的RandStream(我理解为随机数种子)生成伪随机数
  • randn生成标准正态分布的伪随机数(均值为0,方差为1)
    • 主要语法:(同上)
  • randi生成均匀分布的伪随机整数
    • 主要语法:
      • randi(iMax)在区间(0,iMax)生成均匀分布的伪随机整数
      • randi(iMax,m,n)在区间(0,iMax)生成mXn型随机矩阵
      • r=randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

示例:

A=zeros(10,5,3) %%生成一个三维的10x5的矩阵
A(:,:,1)=rand(10,5) %%为一维矩阵进行最大值为1的随机小数赋值
A(:,:,2)=randi(5,10,5) %%为二维矩阵进行最大值为5的随机整数赋值
A(:,:,3)=randn(10,5) %%生成标准正态分布的伪随机数

结果:

>> A(:,:,2)=randi(5,10,5) %%为二维矩阵进行最大值为5的随机整数赋值

A(:,:,1) =

    0.9797    0.1174    0.7303    0.6241    0.2619
    0.4389    0.2967    0.4886    0.6791    0.3354
    0.1111    0.3188    0.5785    0.3955    0.6797
    0.2581    0.4242    0.2373    0.3674    0.1366
    0.4087    0.5079    0.4588    0.9880    0.7212
    0.5949    0.0855    0.9631    0.0377    0.1068
    0.2622    0.2625    0.5468    0.8852    0.6538
    0.6028    0.8010    0.5211    0.9133    0.4942
    0.7112    0.0292    0.2316    0.7962    0.7791
    0.2217    0.9289    0.4889    0.0987    0.7150


A(:,:,2) =

     3     4     3     4     3
     2     2     2     1     2
     2     3     1     1     1
     3     1     1     2     4
     2     5     3     3     4
     2     5     1     4     3
     4     5     3     3     1
     2     2     3     5     2
     5     3     4     4     1
     5     1     4     5     2


A(:,:,3) =

   -0.4711   -1.2038   -0.2551    0.3232   -0.1249
    0.1370   -0.2539    0.1644   -0.7841    1.4790
   -0.2919   -1.4286    0.7477   -1.8054   -0.8608
    0.3018   -0.0209   -0.2730    1.8586    0.7847
    0.3999   -0.5607    1.5763   -0.6045    0.3086
   -0.9300    2.1778   -0.4809    0.1034   -0.2339
   -0.1768    1.1385    0.3275    0.5632   -1.0570
   -2.1321   -2.4969    0.6647    0.1136   -0.2841
    1.1454    0.4413    0.0852   -0.9047   -0.0867
   -0.6291   -1.3981    0.8810   -0.4677   -1.4694

>> 

4.3矩阵的定义与构造

示例:

%%矩阵的定义与构造
A=[1 2 3 5 8 5 4 6]
B=1:2:9 %最小值:步长:最大值
C=repmat(B,3,1) %对矩阵B重复3行1列  (复制和平铺矩阵)、
D=ones(2,4) %生成2行4列的矩阵,矩阵数字都为1

结果:

>> %%矩阵的定义与构造
A=[1 2 3 5 8 5 4 6]
B=1:2:9 %最小值:步长:最大值
C=repmat(B,3,1) %对矩阵B重复3行1列  (复制和平铺矩阵)、
D=ones(2,4) %生成2行4列的矩阵,矩阵数字都为1

A =

     1     2     3     5     8     5     4     6


B =

     1     3     5     7     9


C =

     1     3     5     7     9
     1     3     5     7     9
     1     3     5     7     9


D =

     1     1     1     1
     1     1     1     1

>> 

4.4矩阵的四则运算

5.元胞数组

5.1概念

元胞数组

元胞数组是matlab中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的数据类型,概念理解上,可以认为它和C语言里面的结构体,C++里面的对象很类似。元胞数组是matlab中的特色数据类型,它不同于其他数据类型(如字符型,字符数组或者叫字符串,以及一半的算数数据和数组)。它特有的存取数据方法决定了它的特点,它有给人一种查询信息的感觉,可以逐渐追踪一直到所有的变量全部翻译成基本的数据信息。它的class函数输出就是cell(细胞之意)

MAGCI

magic字面意思是魔方,魔术的意思。在matlab中用来生成n阶幻方。比如三阶幻方就是1-9九个数字,组成一个3*3的矩阵,使得该矩阵无论横,竖还是斜三个方向上的三个数的和总是相同的。幻方是一个很古老的问题。

magic(n)生成一个n阶幻方,就是把1-n^2排成一个n*n的矩阵,使得矩阵的每列,每行,以及主,副对角线上面的n个数之和都相等(容易证明,这个和等于n*(n^2+1)/2)

示例:
>> A{5}=magic(5)

A =

  1×6 cell 数组

    {0×0 double}    {3×3 double}    {0×0 double}    {0×0 double}    {5×5 double}    {0×0 double}

>> A{5}

ans =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

>> 

不难看出如以第一个数17作为基数,它的横向,纵向,斜向相加都是65


You got to put the past behind you before you can move on.