2.1Matlab程序设计语言基础

1.若i和j不改写,它们将表示虚数的。但是在Matlab程序的设计过程中,经常使用i或者j作为循环的变量。如果涉及到虚数运算,应当先确认这两个量有没有被改写,如果被改写了,用i=sqrt(-1)来重置。

2.无穷大,在Matlab中用inf表示,负无穷大相应地用-inf表示。

3.NaN,指的是不定式(not a number,NaN),通常由0/0运算、Inf/Inf及其他可能的运算得出。

4.pi,圆周率的双精度浮点表示。

2.1.2数据结构

1.数值型。Matlab中最常用的数值量是双精度的浮点数,占8个字节(64位),在matlab中其表示为double()。

2.符号型。Matlab中还定义了符号型变量,用来区别数值型变量,可以用于推导公式和数学解析求解。在进行解析运算之前要将采用的变量声明为符号变量,利用的命令是syms.具体用法是syms vars props,其中vars是需要声明的变量列表,可以同时生命多个变量,中间用空格分隔,而不是用逗号分隔开。如果需要,还可以进一步生命变量的类型:props,可以使用的类型由real、positive等。例如,将a、b定义为符号变量可以表达为:syms a b,假设要将a定义成实数,那就用syms a real

符号型数值可以通过变精度算法函数vpa()以任意指定的精度显示出来。该函数的调用格式为vpa(A),或vpa(A,n),其中A是要显示的数值或者矩阵,n为指定的有效数字位数,前者以默认的十进制位数(32位)显示结果

例2-1.自然对数底e的前300位有效数字可以由下面的语句直接显示出来。代码中首先要把1转换成符号量。

如果没有把1转换成符号量,则结果如下:

说明如果没有把1转换成符号类型,虽然要求了提供前300位的解析解,但是程序做不到。

3.其他数据结构。

3.1字符串。Matlab支持字符串变量,与其他语言不同的是,matlab的字符串需要用单引号括起来。(这点跟Python有点像)

3.2多维数组。三维数组是一般矩阵的直接拓展。在控制系统的分析中也可以直接用于多变量系统的表示上。在实际编程中还可以使用维数更高的数组。

3.3单元数组。单元数组是矩阵的直接扩展,其存储格式类似于普通的矩阵,而矩阵的每个元素不是数值,可以认为能储存任意类型的信息,这样每个元素称为“单元”(cell),例如A{i,j}可以表示单元数组A的第i行,第j列的内容。

3.4类与对象。后面再介绍,高阶内容。

2.1.3Matlab的基本语句结构

1.直接赋值语句

变量=值。例如考虑矩阵:

由下面的语句将值直接赋值给矩阵A

2.函数调用语句

基本形式:[返回变量列表]=函数名(输入变量列表),其中,函数名的要求和变量名的要求是一致的,一般函数名应该对应再MATLAB路径下的一个文件。

例如函数名为:my_fun应该对应于my_fun.m文件。还有一些函数名需对应于MATLAB的内核函数(built-n function),如inv()等函数。

返回变量列表和输入变量列表均可以由若干个变量名组成,它们之间应该分别用逗号。返回变量还允许使用空格分隔,例如[U S V]=svd(X),这是对矩阵X进行SVD分解的函数,返回值是S,V,D这三个变量,如果不想返回某个变量,则可以用~符号占位。 

2.1.4冒号表达式于子矩阵提取

这一部分很重要,因为控制系统中的运算除了少数简单的的纯代数运算,大部分都是矩阵运算。冒号表达式时MATLAB中很有用的表达式,在向量生成、子矩阵提取等很多方面极其重要。冒号表达式的原型为:v=s1:s2:s3,该函数将生成一个行向量v,其中s1时向量的起始值,s2为步距:该向量从s1出发,每隔步距s2就取一个点,直至不超过s3的最大值就可以构成一个向量。若省略s2,则步距默认取1.

例2-4选择不同的步距,则可以用下面语句在t∈[0,Π]区间去除一些点构成向量。

下面尝试冒号表达式的不同写法

很明显步距无法是负的,所以v2取出来是个空的向量。

如果省略了s2,程序会默认步距为1.

如果把上下限反过来写,步距写成-1,那么就会逆序排列构成新向量

提取子矩阵是在MATLAB操作中非常容易用到的操作。提取子矩阵的具体方法是B=A(v1,v2),其中,v1向量表示子矩阵要包含的行号构成的向量,v2表示要包含的列号构成的向量,这样从A矩阵中提取有关的行和列,就可以构成子矩阵B了。如果v1的地方用冒号占位,即B=A(:,v2)意思是要提取A矩阵所有的行。子矩阵提取通常配合关键字end使用,end用于表示最后一行/列。

例2-5 下面将列出若干命令,并加以解释。

提取矩阵A的奇数行和所有列。这里嵌套了冒号表达式,我们知道冒号表示的格式是,a=s1:s2:s3,其中s2为步距。那么在B1=A(1:2:end,:)中,逗号前的语句就是冒号表达式,即1:2:end,意思是,从第一行开始,以步距为2,取下一行,一直到行数的末尾。 这样就实现了奇数行的提取。而逗号之后是一个冒号,意思是所有的列都取。

取A矩阵的第3、2、1行和2、3、4列组成新矩阵B2

取A矩阵的所有行,列从第一列到最后一列反着排列组成新矩阵B3。实际上就是左右颠倒个儿。

2.2 基本数学运算

2.2.1矩阵代数运算

如果一个矩阵A有n行、m列元素,则称A矩阵为nxm矩阵;若n=m则矩阵为仿真。

1.矩阵转置

矩阵转置记作,其元素定义为,故B为mxn矩阵。如果A矩阵含有复数元素,则对之转置时,其转置矩阵B的元素定义为即先对各个元素进行转置,然后再逐项求取其共轭复数值。这种转置又称为Hermit转置,其数学符号是。MATLAB中用可以求出A矩阵的Hermit转置,矩阵的转置则可以由求出。

2.加减法

假设再MATLAB环境下有两个矩阵A和B,则可以由命令取执行矩阵加减法。若A和B的矩阵维数相同,它将会自动地将A和B矩阵对应元素相加减,从而得到正确的结果,并赋值给C变量。若二者之一为标量,则应该将其遍加(减)于两一个矩阵。在其他情况下,MATLAB将自动地给出错误信息,提示用户两个矩阵的维数不匹配。

3.矩阵乘法

4.矩阵的左右除

MATLAB中用“\"和"/"分别表示矩阵的左除和右除,A\B为方程的解为方程的解。若A为非奇异方阵,则左除和右除分别为

5.矩阵翻转

矩阵A进行左右翻转再赋值给B:B=fliplr(A),而C=flipud(A)是指把矩阵A上下翻转再赋值给C,D=rot90(A)是将矩阵A逆时针旋转90度再赋值给D

6.矩阵乘方

矩阵乘方要求A必须是方阵,代码为F=A^x,其中x可以是整数、分数、无理数和复数。

7.点运算

MATLAB中的特殊运算。两个矩阵之间的点运算是它们对应元素的直接运算。例如表示A和B的相应元素之间直接进行点乘运算,然后将结果赋值给C矩阵,即。这种点乘运算又称为Hadamard乘积。注意,点乘积要求A和B矩阵的维数相同或其一为标量。这种运算和普通乘法不同。

点运算在MATLAB中起到很重要的作用。例如,当x是一个向量时,则求取数值时不能直接写成x^5,而必须写成x.^5。在进行矩阵的点运算时,同样要求运算的两个矩阵是维度一致的。其实一些特殊的函数,例如sin()也是由点运算的形式进行的,因为它要对矩阵的每个元素求取正弦值。

矩阵点运算不仅可以用于点乘积,还可以用于其他。例如进行A.^A运算,则新的矩阵元素为

2.2.2矩阵的逻辑运算

2.2.4解析结果的化简与变换

MATLB的化简函数为simple(),具体用法:

s1=simple(s) %从各种方法中自动选取最简单格式

[s1,how]=simple(s)%化简并返回实际采用的化简方法

除此之外还有collect()函数,可以合并同类项,expand()函数可以展开多项式,factor()函数可以因式分解,numden()函数可以提取多项式的分子和分母,sincos()可以进行三角函数的化简等。这些函数的信息与调用格式都可以用help查看。

例2.6 假设一致含有因式的多项式

试用各种化简函数对其进行处理,并理解得出的变换结果。

这里需要注意,高版本的matlab好像已经没有simple函数,取而代之的是simplify()

Matlab程序设计语言基础相关推荐

  1. MATLAB程序设计语言语法

    MATLAB程序设计语言基础 一.变量与常量 1.1 常见数据类型 1.1.1 数值型数据 ​ 应当意识到,数值型数据概念的提出是与符号型数据想对应的,matlab一般存储数据为双浮点数,就势必造成存 ...

  2. 程序设计语言基础-知识点

    程序设计语言基础-知识点 程序设计语言就是人类跟计算机沟通的语言 分类 1.高级低级之分 高级 c/c++,java 等 低级 机器语言 汇编等 2.工作方式之分 编译程序:编译成目标程序后再执行.c ...

  3. 第三章 VB程序设计语言基础

    第三章 VB程序设计语言基础 一 VB中的数据与运算 二 标准函数 三 三种基本结构(顺序,判定,循环) 一 VB中的数据与运算 3.1.1 数据类型 3.1.2 变量与常量 3.1.3 运算符和表达 ...

  4. Python程序设计语言基础01:Python基本语法元素

    目录 1. 编译和解释 1.1 编译 1.2 解释 2. 程序的基本编写方法IPO 2.1 含义 2.2 输入 2.3 输出 2.4 处理 3. 使用编程解决问题 3.1 问题的计算部分 3.2 编程 ...

  5. matlab学习--语言基础

    语言基础 语法,数组索引和操作,数据类型,运算符 MATLAB是"矩阵实验室"的缩写.虽然其他编程语言通常一次用数字一个工作,MATLAB ®对整个矩阵和数组操作.语言基础包括基本 ...

  6. 软件设计师教程(四)程序设计语言基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 程序设计语言知识 软件设 ...

  7. 【实验三/四 面向对象程序设计/语言基础与面向对象】

    目录 一.实验目的和要求 二.实验内容 1.求最大公约数 2.复数 5.编写一个含有5个类的程序 三.参考 四.其他实验内容 [实验三 面向对象程序设计] 3.编写一个含圆类的程序 4.含圆类.圆柱类 ...

  8. 软考-软件设计师 - 第2章 程序设计语言基础知识【附补充常考知识点】

    本章导图: 2.1 程序设计语言概述 2.1.1 程序设计语言的基本概念 1 低级语言与高级语言 低级语言:机器语言.汇编语言 高级语言:面向各类应用的程序设计语言,如Java,C,C++,PHP,P ...

  9. 第四章 程序设计语言基础知识

    一. 程序语言的基本概念 1.低级语言与高级语言 1)低级语言:汇编 2)高级语言: 常见的有Java.C.C++.PHP.Pyhton.Delphi 等. 2.编译形式:汇编.解释.编译. 3.程序 ...

最新文章

  1. 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
  2. 使用OpenCV实现摄像头测距
  3. 微型计算机课程设计报警器,微型计算机课程设计声光报警器的设计与制作精选.doc...
  4. java之方法的重写
  5. xcode+文字支持html元素,iOS使用UITextview实现富文本编辑
  6. CentOS7下使用yum安装MariaDB
  7. 【转载】安装pip、pyinstaller并将py脚本打包成exe文件
  8. 《Python入门到精通》Python基础语法
  9. java面向对象程序设计编程题,已拿到offer
  10. Unity3d知识点
  11. 【无人机学习】无人机基础知识
  12. 2021最新更新多接口VIP影视解析源码
  13. 异步bus交互(一)— 两级DFF同步器
  14. 计算机f8进不到安全模式,简单几步解决win10开机按f8进不了安全模式的问题
  15. 从低位开始取出长整型变量s中奇数位上的数依次构成一个新数放在t中
  16. java抠图人物背景图片_如何进行人物抠图?让你快速完成复杂背景人像的在线抠图...
  17. mysql的密码破解
  18. 简约不简单 细说专票电子化的“四个新”
  19. 网络上的两台计算机如何互相访问,win10如何实现两台电脑无线互访
  20. 模拟生成验证码,有相应次数限制(个人学习记录)

热门文章

  1. Newtonsoft解析Json文件
  2. 5.20 综合案例2.0-甲醛浓度检测系统(2.2版本接口有更新)
  3. 操作系统7 文件管理
  4. Flask官方文档学习--从零开始解读(一)
  5. 交通大数据,引领交管勤务模式新变革
  6. java实体类转字符串写法ToStringBuilder的应用
  7. 内网ip 查 核心交换机 流量_局域网通过IP地址如何找到电脑的位置?
  8. vscode代码跳转快捷键
  9. windows分屏和半屏
  10. 个性化MDT离线U盘