《matlab揭秘》--- 笔记

第一章:Matlab环境

  • 我们总结一下 MA TLAB 输入基本算法。要写两数相乘 ab,在 MATLAB 中我们输入 a * b 两数相除 a 除b ,输入为 a / b 这种除法被称为右除,MATLAB 也允许另一种写法,叫左除。如果我们要计算 b 除a ,我 们可以使用反斜杠代替斜杠,表示反过来除,表达式如下: a \ b 幂ab 以下面的形式输入 a ^ b 后,相加和相减以普通形式输入即可 a + b a – b 。

  • 在很多时候,我们并不需要 MATLAB 输出结果。要这样做,只需要在表达式后面加上 **分号(;)**例如:

    ​ x = 2; y = 4; z = x*y

    ​ z = 8

  • 如果输入 whos,我们会得到更多信息,告诉我们当前内存中的变量,类型,每个变量 所分配的内存空间,以及它们是否是复数。

  • 清除全部变量只需 输入 clear 然后回车即可。

  • MATLAB 使用指数形式显示大数字,即是把 5.4387×103表示成 5.4387e + 003。

  • 另一个在很多数学应用中闻名的常数是 e=2.718。在 MATLAB 中我们可以引用 e,输入 exp(a)得到 e的a次方的值。要得到一个数字的平方根,我们输入 sqrt。要得到 x 的自然对数,输入 log(x),如果要得到以 10 为底的对数,输入 log10(x) 。

  • 三角函数:cos(pi/3) sin() tanh() 反三角函数:acos() asin() atanh()

  • 结束 MATLAB 会话,还可以在命令窗口中输入 quit 命令。

第二章:向量与矩阵

  • 向量(vector)一维数值数组。MATLAB 允许你创建列向量和行向量,列向量通过在方 括号内把数值用**分号(;)**隔开来创建,对元素的个数没有限制

  • 创建行向量,我们仍然是把一组数值用方括号括起来,不过这次使用的分隔符是空格 (space)或逗号(,)

  • MATLAB 中,我们用单引号(’)代表转置操作

  • 也可能使用行向量来创建新向量。要从带有 m 个元素的行向量 r 和带有 n 个元素的行 向量 s 中创建带有 m+n 个元素的行向量 u,我们写成 u = [r, s]。例如:

    R = [12, 11, 9];

    S = [1, 4];

    T = [R, S]

    T =

    ​ 12 11 9 1 4

  • 创建等差元素向量 :x = [xi : q: xe]

    • 例如: x = [0:2:10]

      ​ x = 0 2 4 6 8 10

      这组值可以用来创建某函数的在某点的一系列值。例如,假设 y = e的x次方,那么我们就有: y = exp(x)

  • 注意在 MATLAB 中向量的乘方必须在幂运算符前(^)前加上句号(.)

  • MATLAB 还允许创建 n 个对数值相隔相同的行向量,使用的格式为 logspace(a, b, n) / linspace

    • 例如: logspace(1, 2, 5)

      ​ ans = 10.0000 17.7828 31.6228 56.2341 100.0000

  • 命令 length 返回向量中包含元素的个数

  • 使用 max 或 min 命令我们还可以找出向量中数值大和小的元素。

  • 数量积(点乘),使用数组乘法(.*)来完成,或者调用 dot 命令

  • 两个向量 A=(a1 a2 … an)和 B=(b1 b2 … bn)的点乘结果由下式给出 A·B =∑ i aibi

  • 向量的另一个重要操作是叉乘。要计算向量的叉乘,这两个向量必须是的三维的: C = cross(A, B)

  • MATLAB 有几种方法用来引用向量的一个或多个元素(类似于python里面的切片)。向量 v 的第 i 个元素可以用 v(i) 来引用,例如:

    • A = [12; 17; -2; 0; 4; 4; 11; 19; 27]; 则A(2)=17 ,A(:)表示显示所有向量
    • **A(4:6)**选出第 4 到第 6 个元素组成一个新的、含有 3 个元素的向量
  • 矩阵相乘: vs A . B* 与A*B

    ​ A = [2 1; 1 2]; B = [3 4; 5 6];

    ​ A .* B

    ​ ans =11 14

    ​ 13 16


    ​ A = [1 4; 8 0; -1 3]; B = [-1 7 4; 2 1 -2];

    ​ C = A*B

    ​ C = 7 11 -4

    ​ -8 56 32

    ​ 7 -4 -10

  • 特殊矩阵eye(n) 用来创建单元矩阵,要创建 n×n 的零矩阵,我们输入 zeros(n)。我们还可以输入 zeros(m, n)创建 m×n 的矩阵, 当然也完全可以创建整个元素都为 1 的矩阵。可能出乎你意外,你只需输入 **ones(n)或 ones(m,n)**即可分别创建 n×n 和 m×n 的矩阵。

  • 引用矩阵元素

    • 我们可以用 A(m,n)选出第 m 行 n 列的元素
    • 要引用第 i 列的所有元素,我们输入 A(:,i)
    • 要选出从第 i 列到第 j 列之间的所有元素,我们输入 A(:,i:j)。
    • 也可以选出小块或子矩阵 A(2:3,1:2)
    • MATLAB 中创建空数组,只需在方括号[]里留空即可
  • 行列式与线性系统求解

    • 要在 MATLAB 中计算矩阵 A 的行列式,简单地写成 **det(A)**即可
    • 线性系统方程:MATLAB 允许我们使用左除容易地得到解。首先,我们创建由系统(方程)右边组成 的向量。见p35
  • 求矩阵的秩 :使用rank()函数

  • 求逆矩阵与伪逆矩阵 :使用inv(A) 函数求逆矩阵

  • 简化梯形矩阵 :MATLAB 中的 rref(A)函数使用 Gauss-Jordan 消元法产生矩阵 A 降行后的梯形形式

第三章:绘图与图形

  • 在 MATLAB 中绘图包 含下面三个步骤:

      1. 定义函数
      2. 指定要绘制的函数图形的值范围
      3. 调用 MATLAB 的 plot(x, y)函数
  • 这可以通过 xlabel 和 ylabel 函数做到命名坐标轴:plot(x, y), xlabel(‘x’), ylabel(‘cos(x)’);

  • fplot 函数绕过选择用来绘图 的时间间隔,而自动为我们决定绘图的点数。一般地,fplot 为你产生尽可能精确的的图象, 同时它也帮助我们绕过像这样的错误。调用 fplot 的形式如: fplot(‘function string’, [xstart, xend]) 。参数 function string 告诉 fplot 你所要绘制的图象函数,而 xstart 和 xend 定义了**函数的区 间。**例如:fplot(‘exp(-2*t)*sin(t)’,[0, 4]);

    • 当一个函数是由二个或更多 个函数相乘构成,别忘记在相乘时加上“.”以便告诉 MATLAB 我们是对两个矩阵进行相乘。
  • 如果我们在绘图命令行中加 进 axis square,这会使得 MATLAB 产生正方形图象。如果我们输入 axis equal,那么 MATLAB 会产生一个两坐标轴比例和间距都相同的图象。

  • 绘制多个函数,我们只需调用 plot(x, y)函数,其中参数使用一对一对的“x, y”,“x, y” 与“x, y”之间相互独立,后面跟着用单引号引起来、用来表示我们所要绘制的第二条曲线 风格的字符串。例如:

    • t = [0:0.01:5]; f = exp(-t); g = exp(-2*t);
    • plot(t,f,t,g,’–’) % 表示函数g使用‘–’虚线来画线
  • MATLAB 在图象中可以使用四种基本线条风格:

    • 实线 ‘-’ 虚线 ‘–’ 虚点线 ‘-.’ 点线 ‘:’
  • 添加图例legend 命令用起来很简单。只需把它加在 plot(x,y)命令后面,并用单引号把你要添加为 图例的文本引起来。例如:plot(x,y,x,z,’-.’), xlabel(‘x’), ylabel(‘Potential’), legend(‘sinh(x)’,‘cosh(x)’)

  • 设置颜色:plot(x,y,‘r’,x,z,‘b’)

    • 白色 w 黑色 k 蓝色 b 红色 r 青色 c 绿色 g 洋红 m 蓝色 y
  • 设置坐标比例 :axis 命令如何设置绘图范围。可以通过用下面的方式调用 axis 命令: axis ( [xmin xmax ymin ymax] )

  • 子图 :子图即是在一个图上显示多于一个图象。绘制子图使用命令 subplot(m, n, p),这里 m 和 n 告诉 MATLAB 产生的产生的子图有 m 行和 n 列, p 用来告诉 MATLAB 我们所要贴上去的 某个已经绘制的图形窗口。

    • 例如: x = [0:0.01:5]; y = exp(-1.2*x).sin(20x); subplot(1,2,1)

    • 通过给 subplot 传递(1, 2, 1),我们告诉 MATLAB 我们要创建的图有 1 行 2 个窗格块(1 行 2 列)。接下来特定的图象将显示在第一个窗格块中。

    • x = [0:0.01:5];
      y = exp(-1.2*x).*sin(20*x); 
      subplot(1,2,1)  %显示在第一个窗格块中
      plot(x,y),xlabel('x'),ylabel('exp(-1.2x)*sin(20x)'),axis([0 5 -1 1]) 
       y = exp(-2*x).*sin(20*x); 
       subplot(1,2,2)   %显示在第二个窗格块中
       plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(20x)'),axis([0 5 -1 1]) 
      
  • 图象重叠和linspace命令 :我们绘制了一个函数的图象,然后又决定在同一个图形上再绘制另一个函数的图 象。我们通过告诉 MATLAB hold on 后两次调用 plot 命令即可做到。

    • x = linspace(a,b,n) % MATLAB 会在 a、b 之间取出均匀分布的 n 个点

    • x = linspace(a,b) %MATLAB 会在 a 到 b 间取出均匀分布的 100 个点(或行向量)

    • x = linspace(0,2*pi); 
      plot(x,sin(x)),axis([0 2*pi -1 1]) 
      hold on
      plot(x, cos(x)),axis([0 2*pi -1 1]) 
      
      
  • 极坐标和对数图象 :略

  • 离散数据绘图 :折线图,柱状图等等

  • 三维图象 :在 MATLAB 中我们可以调用 mesh(x, y, z)函数来产生三维图象。

    • [x,y] = meshgrid(-2:0.1:2); 
      z = y.*exp(-x.^2-y.^2);
      mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z') 
      % 现在我们绘制表面带有渐变颜色的图象。这可以通过 surf 或 surfc 命令做到。只需简单 的更改上面例子中的命令为:
       surf(x,y,z),xlabel('x'),ylabel('y'),zlabel('z') 
      

第四章:统计和 MATLAB 编程介绍

你可能感兴趣的:(《matlab揭秘》--- 笔记)