分享

MATLAB基础教程

 陆潇潇 2017-05-08

MATLAB 基础教程


        本教程中使用的MATLAB关键语句:plot , polyval , roots , conv , deconv , inv , eig , poly , tf , zero

 

目录


·向量
·函数
·绘图
·多项式向量
·用变量s表示的多项式
·矩阵
·输出
·在MATLAB中使用m文件
·在MATLAB中使用帮助指令

        MATLAB是用于数值计算和数据可视化的交互式程序,在控制工程师进行分析和设计方面有着广泛的应用。MATLAB提供许多不同的工具箱,这使得MATLAB的基本功能扩展到不同的应用领域提供了保障,在本教程中,我们将广泛使用的控制系统工具箱。 MATLAB支持在Unix,Macintosh和Windows环境下运行,MATLAB的学生版可用于个人电脑。有关MATLAB的更多信息,请访问该页面顶部的MathWorks的链接。本教程的初衷是,您可以在一个窗口中运行MATLAB的同时在另一个窗口中查看它们。您能够从教程剪切和粘贴文本到MATLAB或m文件,从而重新做所有的教程的情节和计算。

 

向量


         让我们通过创建简单的东西开始我们的学习,比如一个向量。在括号之间输入向量的每个元素(元素之间用空格分隔),让它相当于一个变量。例如,创建矢量a,在MATLAB中输入以下命令窗口(为了方便,你可以从你的浏览器复制并粘贴到MATLAB,MATLAB应该返回以下值:

t = 0:2:20

 

a =

     1     2     3     4     5     6     9     8     7

   

        假设您希望创建一个向量,该向量的元素介于0和20之间并且是公差为2的等差数列(这种方法经常被用来创建一个时间向量:

t = 0:2:20

 

t =
     0     2     4     6     8    10    12    14    16    18    20

           使用向量跟创建它们一样容易。首先,假设您想让向量a中的每个元素加2。那么应该使用如下方程:

b = a + 2

b =
     3     4     5     6     7     8    11    10     9

           现在假设,您想添加两个向量在一起。如果两个向量是相同的长度,计算非常容易,只需要将两个向量加起来即可,如下所示:

c = a + b

   c =

     4     6     8    10    12    14    20    18    16

              同理也可以得到长度相同的向量的减法公式。

 

函数


         为使计算更加方便,MATLAB包括许多标准函数。每个函数的代码完成特定的任务。MATLAB包含许多标准方程,比如sin, cos, log, exp, sqrt以及其他别的函数。一些常用的常数像π,i或j (-1的平方根)也包含在MATLAB中。

sin(pi/4)

 

ans =
    0.7071

        要想得到不同函数的使用方法,只需要在MATLAB的command 窗口里面输入 help [function name](中括号里面只需要输入自己想使用的函数名称即可)。

        MATLAB甚至允许您编写自己的函数与函数命令;按照链接,学习如何编写自己的函数,看一下本教程中我们为您编写的函数

 

绘图


        在MATLAB中绘图也是非常容易的,假设你想创建一个以时间为函数的正弦函数图像。首先创建一个时间向量(每条语句后面的分号告诉MATLAB我们不需要看到所有的运算结果),然后在每一个时间点计算正弦值,在plot函数后面的指令((title, xlabel, ylabel)是用来给得到的图像添加注释的。

t = 0:0.25:7;
y = sin(t);

plot(t,y)
title('Sine Wave as a Function of Time')
xlabel('Time (secs)')
ylabel('Amplitude')


        这个绘图结果包含大约一个周期的正弦图像,基本的绘图指令在MATLAB中是很简单的,当然plot指令还包括很多附加功能。在此建议您访问plot的相关页面来了解更多的相关信息。

 

多项式向量


          在MATLAB中,多项式可以由一个向量表示。要在MATLAB中创建多项式,只需输入多项式从高次到低次的各项系数,由此组成一个向量即可。举例来说,假设你有以下多项式:

  $$<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
s^4 + 3s^3 - 15s^2 - 2s +9<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
$$ (1)

 

          将此多项式输入MATLAB中,只需要将其按照如下的向量方式输入即可:

x = [1 3 -15 -2 9]

x =
     1     3   -15    -2     9
        MATLAB可以用一个n+1个元素的向量来代替一个n阶的多项式,如果多项式中缺少了某项,那么在向量的相应位置必须用0来补齐,例如:

  $$<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
s^4 + 1<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
$$ (2)

 

          在MATLAB中将用如下的形式表示

y = [1 0 0 0 1]

y = [1 0 0 0 1]
y =
     1     0     0     0     1

          你还可以利用 polyval函数来得到多项式的值,例如,当s=2时我们可以得到上述多项式的值

z = polyval([1 0 0 0 1],2)

z =
    17
        你也可以得到多项式的根,这在你计算高阶多项式的时候会非常有用,比如:
 

  $$<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
s^4 + 3s^3 - 15s^2 - 2s + 9<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
$$ (3)

  
        利用下面的指令可以很容易得到多项式的根

roots([1 3 -15 -2 9])

ans =
   -5.5745
    2.5836
   -0.7951
    0.7860

        如果你想计算两个多项式的乘积,两个多项式乘积的结果由他们系数的卷积得到,在MATLAB中conv函数将会帮你完成这项工作。

x = [1 2];
y = [1 4 8];
z = conv(x,y)

z =
     1     6    16    16

 

        向量的除法也很简单,利用deconv函数能够同时返回最终结果跟余数,我们可以验证一下z除以y是否得到x。

[xx, R] = deconv(z,y)

xx =
     1     2
R =
     0     0     0     0
        正如你所见,结果恰为先前的x向量。当z不能被y整除时,余数向量也不为零。

 

用向量s表示多项式


        在MATLAB中另一种用来表示多项式的方法是使用拉普拉斯变量s。这种方法的使用将会贯穿整个教程。现在我们可以暂时忽略拉普拉斯变换域,只是用变量s来代表多项式。要定义变量,请在MATLAB命令窗口输入如下指令:

s = tf('s')

s =
  s 
Continuous-time transfer function.

 

        利用曾经给过的多项式

  $$<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
s^4 + 3s^3 - 15s^2 - 2s +9<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
$$ (4)

 

polynomial = s^4 + 3*s^3 – 15*s^2 – 2*s + 9为了在MATLAb中表示此多项式,请在MATLAB命令窗口中输入如下指令:

polynomial =
  s^4 + 3 s^3 – 15 s^2 – 2 s + 9
Continuous-time transfer function.

 

        不用roots函数,我们可以用zero函数来得到多项式的根。

zero(polynomial)

ans =
   -5.5745
    2.5836
   -0.7951
    0.7860
        正如你所见,结果跟先前用roots函数得到的结果一致。

        你也可以利用s变量求两个多项式的乘积,我们定义x和y

x = s + 2;
y = s^2 + 4*s + 8;
z = x * y

z =
  s^3 + 6 s^2 + 16 s + 16
Continuous-time transfer function.

 

        最终得到的多项式的系数跟先前利用向量跟conv函数得到的结果是一致的。

 

矩阵


        在MATLAB中输入矩阵的方式跟输入向量的方式是相同的,只不过每一行向量最后用分号(:)或是回车来区分:

B = [1 2 3 4; 5 6 7 8; 9 10 11 12]

B = [ 1  2  3  4
      5  6  7  8
      9 10 11 12 ]

B =
     1     2     3     4
     5     6     7     8
     9    10    11    12
B =
     1     2     3     4
     5     6     7     8
     9    10    11    12

        在MATLAB中,矩阵的计算有很多种形式,例如,你可以利用撇号键来计算一个矩阵的转置矩阵:

C = B'

C =
     1     5     9
     2     6    10
     3     7    11
     4     8    12

        应该注意的是,如果C是复数矩阵,撇号实际计算得出的是复数的共轭转置,在这种情况下要想得到转置矩阵,应该使用.’(如果矩阵不是复数矩阵那么这两个指令是相同的)。

 

        现在你也可以将两个矩阵B和C相乘,需要注意矩阵乘法的秩序问题。

D = B * C

D = C * B

D =
    30    70   110
    70   174   278
   110   278   446
D =
   107   122   137   152
   122   140   158   176
   137   158   179   200
   152   176   200   224

 

矩阵计算还有另外一种方式,可以利用.*运算来计算两个矩阵的相对应元素的乘积(矩阵的秩必须保持一致)。

E = [1 2; 3 4]
F = [2 3; 4 5]
G = E .* F

E =
     1     2
     3     4
F =
     2     3
     4     5
G =
     2     6
    12    20

 

如果有一个方阵,比如说矩阵E,你可以根据需要求矩阵的的各个次幂,只需要给予相应的指数即可。

E^3

ans =
    37    54
    81   118

 

如果只是想求各个元素的立方,只需要每一个元素的立方依次求得即可。

E.^3

ans =

     1     8

    27    64

 

你也可以求得一个矩阵的逆矩阵:

X = inv(E)

X =
   -2.0000    1.0000
    1.5000   -0.5000

 

或者是矩阵的特征值

eig(E)

ans =
   -0.3723
    5.3723

 

甚至还有用来求得矩阵特征多项式系数的函数。 poly 函数可以得到一个包含特征多项式系数的向量。

p = poly(E)

p =
    1.0000   -5.0000   -2.0000

需要注意矩阵的特征值跟特征多项式的根是一样的。

roots(p)

    5.3723
   -0.3723

 

输出


MATLAB中输出指令非常简单,只需要遵循下面所列的步骤即可。

Macintosh
·从Macintosh中输出图像,只需要点击plot或者是m文件,在File菜单里面选择Print,然后再点击Return。

Windows
·在windows系统的电脑里面输出图像,只需要在plot或是m文件的窗口下选择File菜单中的Print,然后点击Return即可。

Unix
·在Unix下输出图像,输入指令:print -P<printername>
·如果你想保存图像以备打印,输入指令:print plot.ps.
·一段时间之后,你还可以用如下指令输出图像:lpr -P plot.ps。如果你是使用HP工作站的话,输出图像需要输入指令: lpr -d plot.ps.
· 输出一个m文件,只需要按照输出其他文件的方式一样,使用指令:lpr -P name of m-file.m。如果你是使用HP工作站的话,需要使用指令:lpr -d plot.ps name of m-file.m.

 

在MATLAB中使用m文件


在不同的工作平台上有着细微的区别。

Macintosh
·有一个m文件的内置编辑器,在File菜单里面选择New M-file,你也可以使用其他你喜欢的编辑器(需要注意的是要用文本文档保存然后在启动MATLAB的时候调入进去)。

Windows
·在windows里面运行MATLAB跟在Macintosh里面运行非常相像,然而,你需要知道你的m文件要保存在剪切板里面,因此,你必须要确保你储存的格式是filename.m。

Unix
·你需要独立于MATLAB运行一个编辑器,最好的方式是为你所有的m文件做一个目录,在运行MATLAB和编辑器之前保存目录。从Xterm窗口里面运行MATLAB,只需要输入:matlab。

 

在MATLAB中使用帮助指令


你可以直接在MATLAB里面输入指令,也可以把你所有需要的指令写在一个m文件里面,然后再运行文件。如果你把所有的m文件都放入启动MATLAB的目录里面,那么MATLAB就能一直找到它们。

MATLAB具有相当不错的联机帮助,输入:

help commandname

要想得到给定指令的更多信息,你需要知道你要搜索的指令的名称,本教程中使用的所有指令都在罗列在指令清单里面,这个页面的链接可以在本页面的右上角找到。
在教程的最后还有一些注意事项。
任何时候只要你输入一个特定变量的名称就会得到它的值。

B

B =
     1     2     3     4
     5     6     7     8
     9    10    11    12
你也可以在一行里面写多个语句,只要你用分号或是逗号将不同的语句隔开。

另外,你可能已经注意到,只要你不给变量分配一个特定的操作或结果,MATLAB会把它存储在一个名为ans的临时变量里面。

想搞清楚你安装的版本和那些工具箱吗?使用ver试试:

>> ver

-------------------------------------------------------------------------------------

MATLAB Version 7.1.0.246 (R14) Service Pack 3

MATLAB License Number: 161051

Operating System: Microsoft Windows 2000 Version 6.0 (Build 6002: Service Pack 2)

Java VM Version: Java 1.5.0 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode

-------------------------------------------------------------------------------------

MATLAB                                                Version 7.1        (R14SP3)

Simulink                                              Version 6.3        (R14SP3)

Aerospace Blockset                                    Version 2.0.1      (R14SP3)

Bioinformatics Toolbox                                Version 2.1.1      (R14SP3)

CDMA Reference Blockset                               Version 1.1.1      (R14SP3)

Communications Blockset                               Version 3.2        (R14SP3)

Communications Toolbox                                Version 3.2        (R14SP3)

Control System Toolbox                                Version 6.2.1      (R14SP3)

Curve Fitting Toolbox                                 Version 1.1.4      (R14SP3)

Data Acquisition Toolbox                              Version 2.7        (R14SP3)

Database Toolbox                                      Version 3.1        (R14SP3)

Datafeed Toolbox                                      Version 1.7        (R14SP3)

Distributed Computing Toolbox                         Version 1.0.2      (R14SP3)

Embedded Target for Infineon C166 Microcontrollers    Version 1.2.1      (R14SP3)

Embedded Target for Motorola HC12                     Version 1.1.3      (R14SP3)

Embedded Target for Motorola MPC555                   Version 2.0.3      (R14SP3)

Embedded Target for OSEK VDX                          Version 1.1.3      (R14SP3)

Embedded Target for TI C2000 DSP(tm)                  Version 1.3        (R14SP3)

Embedded Target for TI C6000 DSP(tm)                  Version 2.4        (R14SP3)

Excel Link                                            Version 2.3        (R14SP3)

Extended Symbolic Math                                Version 3.1.3      (R14SP3)

Filter Design HDL Coder                               Version 1.3        (R14SP3)

Filter Design Toolbox                                 Version 3.3        (R14SP3)

Financial Derivatives Toolbox                         Version 4.0        (R14SP3)

Financial Time Series Toolbox                         Version 2.2        (R14SP3)

Financial Toolbox                                     Version 2.5        (R14SP3)

Fixed-Income Toolbox                                  Version 1.1.1      (R14SP3)

Fixed-Point Toolbox                                   Version 1.3        (R14SP3)

Fuzzy Logic Toolbox                                   Version 2.2.2      (R14SP3)

GARCH Toolbox                                         Version 2.1        (R14SP3)

Gauges Blockset                                       Version 2.0.2      (R14SP3)

Genetic Algorithm Direct Search Toolbox               Version 2.0        (R14SP3)

Image Acquisition Toolbox                             Version 1.9        (R14SP3)

Image Processing Toolbox                              Version 5.1        (R14SP3)

Instrument Control Toolbox                            Version 2.3        (R14SP3)

Link for Code Composer Studio                         Version 1.4.2      (R14SP3)

Link for ModelSim                                     Version 1.4        (R14SP3)

MATLAB Builder for COM                                Version 1.1.5      (R14SP3)

MATLAB Builder for Excel                              Version 1.2.5      (R14SP3)

MATLAB Compiler                                       Version 4.3        (R14SP3)

MATLAB Distributed Computing Engine                   Version 1.0.2      (R14SP3)

MATLAB Report Generator                               Version 2.3.1      (R14SP3)

MATLAB Web Server                                     Version 1.2.4      (R14SP3)

Mapping Toolbox                                       Version 2.2        (R14SP3)

Model Predictive Control Toolbox                      Version 2.2.1      (R14SP3)

Model-Based Calibration Toolbox                       Version 2.1.2      (R14SP3)

Neural Network Toolbox                                Version 4.0.6      (R14SP3)

OPC Toolbox                                           Version 2.0.1      (R14SP3)

Optimization Toolbox                                  Version 3.0.3      (R14SP3)

Partial Differential Equation Toolbox                 Version 1.0.7      (R14SP3)

RF Blockset                                           Version 1.2        (R14SP3)

RF Toolbox                                            Version 1.2        (R14SP3)

Real-Time Windows Target                              Version 2.6        (R14SP3)

Real-Time Workshop                                    Version 6.3        (R14SP3)

Real-Time Workshop Embedded Coder                     Version 4.3        (R14SP3)

Robust Control Toolbox                                Version 3.0.2      (R14SP3)

Signal Processing Blockset                            Version 6.2        (R14SP3)

Signal Processing Toolbox                             Version 6.4        (R14SP3)

SimDriveline                                          Version 1.1.1      (R14SP3)

SimMechanics                                          Version 2.3        (R14SP3)

SimPowerSystems                                       Version 4.1.1      (R14SP3)

Simulink Accelerator                                  Version 6.3        (R14SP3)

Simulink Control Design                               Version 1.3        (R14SP3)

Simulink Fixed Point                                  Version 5.1.2      (R14SP3)

Simulink Parameter Estimation                         Version 1.1.2      (R14SP3)

Simulink Report Generator                             Version 2.3.1      (R14SP3)

Simulink Response Optimization                        Version 2.3        (R14SP3)

Simulink Verification and Validation                  Version 1.1.1      (R14SP3)

Spline Toolbox                                        Version 3.2.2      (R14SP3)

Stateflow                                             Version 6.3        (R14SP3)

Stateflow Coder                                       Version 6.3        (R14SP3)

Statistics Toolbox                                    Version 5.1        (R14SP3)

Symbolic Math Toolbox                                 Version 3.1.3      (R14SP3)

System Identification Toolbox                         Version 6.1.2      (R14SP3)

Video and Image Processing Blockset                   Version 1.2        (R14SP3)

Virtual Reality Toolbox                               Version 4.2.1      (R14SP3)

Wavelet Toolbox                                       Version 3.0.3      (R14SP3)

xPC Target                                            Version 2.8        (R14SP3)

xPC Target Embedded Option                            Version 2.8        (R14SP3)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多