一,数据结构

1.MATLAB语言的变量与常量

MATLAB语言的变量名规则:由一个字母引导,后面可以为其他字符(字母,数字,下划线)。

注意:

运算符号“+”“-”等,不属于其他符号。

因此,类似于“MyZar+”这样的变量名就是错误的。

同时,除了变量之外,MATLAB为了计算方便,提供了一些保留常量

Eg:

pi — 表示圆周率π

eps — 表示判零的一个误差限,它的值大约是10^(-16)左右。

inf — 表示无穷大

NaN — 表示不定式,即0/0或∞/∞

2.MATLAB语言的数据结构

(1)数值型数据结构

双精度数值变量(通常使用的都是双精度数据结构):遵从IEEE标准,采用64位二进制数来表示一个数值。

其他数据类型:单精度数据结构single(),32位;uint8(),常用于图像表示和处理,8位;int8();int16();int32();

(2)符号型数据结构

符号型,sym(A),常用于公式推导和求解析解

变量声明 syms var_list var_props  (定义符号型的变量)

如果有了数值A,可以通过vpa(A)把它显示出来;也可以通过sym(A)把它转换成符号型的数据结构。

显示符号变量的任何精度:vpa(A)    vpa(A,n)                  默认精度,32位十进制有效数字

显示符号变量的属性:assumptions()

设置符号变量类型:assume()    assumeAlso()

Eg1:符号型数值与双精度数值的区别。

以1/3为例,如果采用符号型数值结构,在计算的全程中,它一直会使用1/3这样一个有理数;而用双精度数值结构,使用的值是0.333...33,保留15位有效数字(后续可能有其他数值,但是没有意义,只有前15位是有效的)。

Eg2:圆周率π。

求出π的300位有效数字。

Matlab代码    vpa(pi,300)

可以任意增加有效数字的位数。但是,随着有效数字位数的增加,运行时间会变长,位数要求过多可能无法显示。

Eg3:试用符号型数据结构表示数值12345678901234567890。

错误写法:A=sym(12345678901234567890)

正确写法:B=sym('12345678901234567890')                       把数值用单引号引起来变成字符串

(3)其他数据结构

字符串型数据:用单引号括起来

多维数组:是矩阵的直接扩展,多个下标

单元数组:将不同类型数据集成到一个变量名下面,用{}表示

表格数据结构:可以定义带表头的表格

类与对象:可以定义重载函数,类与对象是“面向对象”编程的基本元素——传递函数对象

二,矩阵与向量的输入方法

1.两种基本语句结构

(1)直接赋值语句

接赋值语句的基本结构

variable=expression

一个变量名后面是表达式,表达式运算完之后将结果传给变量名。

赋值语句的末尾加一个分号可以阻止显示运算的结果。

保留变量:ans,存放最近一次无赋值变量语句的计算结果。

当赋值语句没有左边的变量,直接给出表达式,这个结果也会计算,计算结果赋给一个保留变量ans。ans里总是存放最后的运算结果。

Eg:表示矩阵  

MATLAB代码:A=[1,2,3;4,5,6;7,8,9]

同样,还可以B=[1,2;4,5];

A=[[B;[7,8]],[3;6;9]]

其中,逗号表示换列,分号表示换行。

(2)函数调用语句

[returned_arguments]=function_name(input_arguments]

左边方括号里面有一些返回变量,返回的变量名之间可以用逗号也可以用空格表示。右边是函数名以及函数的输入变量。

函数调用举例 [U S V]=svd(X)

一般函数在MATLAB下都有对应的.m文件,可以通过m文件进行调用。

2.冒号表达式与子矩阵提取

冒号表达式是定义行向量的有效方法

v=s1:s2:s3;

开始于值s1,步长为值s2,终止于值s3。如果不设置的话,步长默认为1。

v1=0:0.2:pi;                      %%0到π之间,从0开始,间隔0.2取值

v2=linspace(0,pi,50);                     %%0到π之间,均匀地取50个数

3子矩阵提取

子矩阵提取的基本语句格式

B=A(v1,v2);

v1表示子矩阵要保留的行号构成的向量

v2表示要保留的列号构成的向量

:, 表示要提取所有行或列,取决于其位置

end的使用

举例

B=A(1:2:end,:),表示以1开始,步距为2,直至最后一行(end),即把A矩阵的奇数行提取出来。并且,提取所有的列(;) 。

C=A([1,1,1,1],:) ,表示把A矩阵的第一行重复4遍,并提取所有列。

三,矩阵的代数运算

1.矩阵转置

Hermite转置           C=A'

一般转置           B=A.'              (注意不要漏了.

2.加减法运算

C=A+B

C=A-B

在新版本中,如果A是一个n*n的矩阵,B是一个n*1的列向量,也可以进行加减运算,即将列向量B加到矩阵A对应的列上。

3.矩阵乘法
C=A*B

4.矩阵除法(注意左除与右除符号的异同)

矩阵左除:求解线性方程组AX=B

MATLAB解法:X=A\B

若A为非奇异方阵,;如果A不可逆,得到的是方程的最小二乘解。最小二乘解的含义是,使得表达式最小所对应的X矩阵。

矩阵右除:求解线性方程组XA=B

MATLAB解法:X=B/A

即,若A为非奇异方阵,

5.矩阵翻转

左右翻转,B=fliplr(A)

上下翻转,B=flipud(A)

旋转90°,D=rot90(A)       注意:这里是逆时针旋转。

旋转180°,D=rot90(A,2)

6.矩阵乘方

即矩阵A的x次幂,数学表达式为:

MATLAB命令:F=a^x

这里,A为方阵,x为实数或者复数。

7.点运算

矩阵对应元素的直接计算。

C=A.*B

四,矩阵的其他运算

1.矩阵的逻辑运算

逻辑变量:非0元素表示逻辑1,0元素表示逻辑0.

逻辑运算

与运算    A&B

或运算    A|B

非运算    B=~A

异或运算    xor(A,B)

Eg:find语句的应用。

A=[1,2,3;4,5,6;7,8,0];
i=find(A>=5)'       %%原本会以列的形式输出,加了单引号后会以行的形式输出

i中输出的结果是A矩阵中满足大于等于5元素的序号。矩阵中元素的序号是按列表示的,结果中的

i =

3     5     6     8

表示矩阵按列排序所得的第三个第五个第六个第八个元素。

如果不喜欢单序号,也可以用双序号表示,即

A=[1,2,3;4,5,6;7,8,0];
[i,j]=find(A>=5)

输出结果如下所示,i表示行号,j表示列号。

2.解析结果的简化与变换

如果有一个符号表达式,可以调用simplify()进行一个自动的化简。

numden() ——把符号表达式的分子分母提取出来。

collect() ——做合并同类项处理。

expand() ——做展开处理。

factor() ——做因式分解。

Eg:多项式处理。

化简多项式

syms s;
P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64);
P1=simplify(P)

多项式因式分解与展开

P3=factor(P)
P4=prod(P3)

3.变量替换

将符号表达式中的x1,替换为x1*:

f1=subs(f,x1,x1*)

将符号表达式中的若干个变量同时进行替换:

f1=subs(f,{x1,x2,...,xn},{x1*,x2*,...,xn*})

Eg:对做双线性变换。

双线性变换,即用z替换s,s=(z-1)/(z+1)。

syms s z;        %%定义符号变量s和z
P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64);
P1=simplify(subs(P,s,(z-1)/(z+1)))
latex(P1)        %%P1表达式的Latex表示

4.常用计算函数

floor()    向下取整

ceil()    向上取整

round()    四舍五入取整

fix()    往0方向取整

k=gcd(n,m)    求最大公约数

k=gcd(n,m)    求最小公倍数

[n,d]=rat(x)    实现表达式的有理化,将分子分母提取出来

Eg:Hilbert矩阵

Hilbert矩阵可以由hilb()定义,试对一个3*3Hilbert矩阵其进行有理数变换。

A=hilb(3)        %%生成3*3Hilbert矩阵
[n,d]=rat(A)       %% n是分子矩阵,d是分母矩阵

Eg:全排列计算

假设5个人照集体照,共有多少种排列方式?

Matlab的perms()函数可以计算全排列,并穷举出所有排列形式。

P=perms(1:5)      %%生成5个人的编号1-5,并进行排序
size(P)     

调用size看出,P是一个120*5的矩阵。所有不难得出,一共有120种排列方式。

同样,也可以将5个人用ABCDE表示,对字母进行排序。

P=perms('ABCDE')      %%这里一定要用单引号,表示里面是字符
size(P) 

注:一定不要漏了单引号。

控制系统与仿真CAD(2)——Matlab语言程序设计基础part1相关推荐

  1. matlab hilb,MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础

    <MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础>由会员分享,可在线阅读,更多相关<MATLAB在科学计算中的应用:第2章 MATLAB 语言程序设计基础(7 ...

  2. proteus四人抢答器_51单片机四路抢答器PROTEUS仿真报告(含C语言程序).doc

    51单片机四路抢答器PROTEUS仿真报告(含C语言程序) HEFEI UNIVERSITY 四路抢答器仿真设计 题 目 四路抢答器仿真设计 班 级 自动化(1)班 成 员 YCT * PT * WW ...

  3. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  4. python语言程序设计慕课_中国大学MOOC(慕课)_Python语言程序设计基础_试题及答案...

    中国大学MOOC(慕课)_Python语言程序设计基础_试题及答案 更多相关问题 智慧职教: 反应级数的绝对值不会超过3,可以是正整数或者负整数,不能是分数. 在铆接过程中,铆孔的质量直接影响铆接质量 ...

  5. c语言程序设教材计 乌云高娃,C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt...

    C语言程序设计教学课件作者第3版乌云高娃演示文稿C语言程序设计教学课件作者第3版乌云高娃演示文稿演示文稿第1章C语言程序设计基础课件.ppt 主要内容 课程概述 为什么选择C语言作为入门课程? C语言 ...

  6. c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...

    01程序设计基础实验报告_C语言程序设计基础 程序设计基础 实验报告 题 目: C语言程序设计基础 院 (部): 管理工程学院 专 业: 信息管理与信息系统 班 级: 信管101 姓 名: 张三 学 ...

  7. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  8. 《C语言程序设计基础》第2章作业,清华大学出版社-图书详情-《C语言程序设计基础实验与题解》...

    C语言是国内外广泛使用的一种程序设计语言,也是初学程序设计人员的首选入门程序设计语言.C语言具有表达能力强.代码质量高和可移植性好等特点,既具有高级语言的特点,又具有汇编语言的优点,越来越受到人们的欢 ...

  9. 对c语言和程序设计基础的体会,C语言程序设计基础与应用

    <C语言程序设计基础与应用(高等院校计算机教育系列教材)>由刘丽.朱俊东.张航编著,本书内容由浅入深.循序渐进,介绍C语言的基本语法知识和程序设计等内容,同时兼顾了全国计算机等级考试二级C ...

  10. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...

    python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...

最新文章

  1. YOLOvi(i=1,2,3,4)系列
  2. 串口ISPHUB制作
  3. 科普MinGW MinGW-W64
  4. C语言 删除文件 M,最全的C盘可删除文件清单
  5. webpack学习笔记1
  6. jQuery实现textarea高度根据内容自适应
  7. break与continue关键字的使用
  8. catia 桥接曲面圆角_CATIA建模教程_二_圆角及桥接在空间曲线中的应用
  9. 浅谈交换机和路由器的区别
  10. LoRa节点如何以OTAA方式入网TTN服务器?
  11. Python: DateFrame教程
  12. EPC概念、EPC编码、EPC标签
  13. 六、Java中常用的API(通过包进行分类)————File类、IO流
  14. Kakfa LAG监控
  15. C4D模型工具—沿着法线移动/缩放/旋转
  16. 越狱剧《青盲》观感之“自作孽不可活”
  17. sklearn中warm_start参数的作用详解
  18. Android AVD Manager - 安卓虚拟机的设置
  19. 华为无线基于黑白名单认证上网
  20. 广告效果不满意?试试互动广告!

热门文章

  1. MVC升级swagger No operations defined in spec!
  2. rds与hecs区别 华为云_华为云的顶级销售如何用一封邮件搞定罗胖?
  3. 4.1是否同一棵二叉搜索树
  4. HQChart使用教程30-K线图如何对接第3方数据28-大盘数据[INDEXA,INDEXC......]
  5. 属于爸爸们的SVG模版
  6. AE开发20210601之绘制集合要素、绘制点、空间查询、属性查询、图形查询、选择集内容、符号化
  7. 明星养成游戏java_太原中软:这些一线明星都是Java编程界的“鬼才”
  8. 瓷器时代:智能运维工具 cmdb/堡垒机/webssh/主机管理/云主机/Devops/任务编排/自动化运维
  9. 好吧我摊牌了,这是C++最好的5 个网站
  10. cocos-creator使用记录16_用户自定义监听事件