MATLAB+simulink仿真学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

此文仅记录本人学习matlab学习内容


提示:以下是本篇文章正文内容,下面案例可供参考

pandas是什么?

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

界面介绍

在这里插入图片描述
创建的变量都会在这里显示
在这里插入图片描述
这是写代码的地方,相当于计算器

在这里插入图片描述
【引用于:https://www.bilibili.com/video/BV1Rq4y1S7S8?p=22。侵删。】

数值数据类型

  1. 整型
    在这里插入图片描述

  2. 浮点型
    默认数据类型为双精度型
    在这里插入图片描述

  3. 复数型
    在这里插入图片描述
    数值数据的输出格式

  1. format函数:将数值数据以指定的格式输出
    用法:format 格式符
    例如 format long
    50/3
    ans=16.666666666666668(long格式输出)
    **注意:**如果format不加格式符,表示默认输出格式:双精度型
    *********format命令只影响输出格式,不影响数据的计算和存储

常用数学函数
在这里插入图片描述
(2)常用的数学函数

  1. 三角函数
    三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。
    在这里插入图片描述
  2. abs函数
    abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
    在这里插入图片描述
  3. 取整函数
    用于取整的函数有fix、floor、ceil、round。

round函数按照四舍五入的规则取整。
ceil函数是向上取整,取大于等于这个数的第一个整数。
floor函数是向下取整,取小于等于这个数的第一个整数。
fix函数是固定取靠近0的那个整数﹐即舍去小数取整。
在这里插入图片描述

  1. 取余函数
    rem(m,n)
    表示为m%n
  2. 判断素数函数
    isprime();
    返回1为素数,0为非素数

变量的命名规则

·1 变量名区分大小写
·2 变量名长度不超过63位(MATLAB R2012a 32bit和64bit计算机上测试结果)
·3 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点。
·4 变量名应简洁明了,

预定义变量

ans是默认赋值变量
i和j是虚数单位
pi代表圆周率
NaN代表非数

文件管理

(一)在工作区内查看和修改变量
在这里插入图片描述
(二)
who和whose函数:用于显示已经驻留在工作区内的变量名清单
在这里插入图片描述
(三)内存变量文件
用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
在这里插入图片描述

矩阵

建立矩阵

直接表示A=[1 2 3;4 5 6; 7 8 9] %用[]表示矩阵 【单个元素之间用空格或者逗号隔开,每一维用分号;隔开】

复数矩阵 实部矩阵和虚部矩阵构成 比如现在有A和B矩阵,则复数矩阵C可以表示为C=A+i*B

用冒号表达式来建立
格式:E1:E2:E3
E1表示初始值 E2表示步长 E3表示终止值
例如 z=1:1:5
t=1 2 3 4 5

linspace函数
linspace(a,b,n) a为起始值,b为终止值,n为个数,形成n个随机数
当n省略时,自动生成100个值

结构矩阵和单位矩阵

结构矩阵(相当于c语言中的结构体),结构矩阵内的元素相当于结构体类型变量,而对于结构体赋值的格式为:结构体元素.成员名=表达式
在这里插入图片描述

单元矩阵

单位矩阵个跟结构体矩阵类似,但是结构体变量下还有成员,而单位矩阵可以直接存储不同的类型变量。
矩阵元素都要有用打大括号括起来
在这里插入图片描述

矩阵元素的引用

矩阵元素的引用方式
(一)通过下标来引用矩阵元素
A(a,b)
如果下标所在的坐标大于A矩阵原来的大小,则会自动扩展,没有赋值的元素为0;
在这里插入图片描述
(二)通过序号来引用
矩阵存储是按列存储,所以序号从小到大计算是按列数
在这里插入图片描述
矩阵元素的序号和下标可以用sub2ind和ind2sub函数实现相互转化

sub2ind函数 :下标转序号
在这里插入图片描述
size(A)是求A的行数和列数,存储在1*2的矩阵中 在这里插入图片描述

ind2sub函数:序号转下标 在这里插入图片描述
> !](https://img-blog.csdnimg.cn/8be0b8a3021a43f5b55642bc76484661.png)

(三) 用冒号表达式获得子函数在这里插入图片描述> (四)end运算符
在这里插入图片描述

利用空矩阵删除矩阵元素

改变矩阵的形状

reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。
注意:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。
在这里插入图片描述
在这里插入图片描述

矩阵运算
B=A’ A的转置
C=A(:) 将A的每列排成一列
D=inv(A) 求A的逆矩阵
生成零矩阵: zeros(10,5,3)从三个维度生成10行3列的矩阵

元胞数组

cell()%用()表示元胞数组

cell(1,2)
ans =
1×2 cell 数组
{0×0 double} {0×0 double}

生成的元胞数组是用{}表示的

eye(n)表示生成 n阶单位矩阵
【更多库函数查看:https://blog.csdn.net/luanpeng825485697/article/details/77510669?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165443236516781683911031%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165443236516781683911031&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-77510669-null-null.142v11insert_blog,157v13control&utm_term=matlab%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187】
*

结构体

示例

A=struct(‘a’,{{‘123’,‘456’}},‘b’,[5 40])
A.a(1)
A.a{1}
%运行结果
A =
包含以下字段的 struct:
a: {‘123’ ‘456’}
b: [5 40]
ans =
1×1 cell 数组
{‘123’}
ans =
‘123’

A=struct(‘a’,{{[1 2],[1 2 4,2 3 4]}},‘b’,[5 40])
A.a(1)
%运行结果
A =
包含以下字段的 struct:
a: {[1 2] [1 2 4 2 3 4]}
b: [5 40]
ans =
1×1 cell 数组
{1×2 double}

结构体数组:例如A=struct(‘a’,{{[1 2],[1 2 4,2 3 4]}},‘b’,[5 40])中,a为数组,a中有两个元素{[1 2]},{[1 2 4,2 3 4]},则a作为元胞数组表示为{{[1 2]},{[1 2 4,2 3 4]}},将其中的}去掉表示为{{[1 2],[1 2 4,2 3 4]}}。

矩阵的四则运算

A=[1 2 3,4 5 6,7 8 9]
B=[3 4 5,7 8 9,3 5 2]
C=A+B
D=A-B
E=A*B‘
F=A.*B%加.表示对应项相乘

结果

A =
1 2 3 4 5 6 7 8 9
B =
3 4 5 7 8 9 3 5 2
C =
4 6 8 11 13 15 10 13 11
D =
-2 -2 -2 -3 -3 -3 4 3 7
E =
227
F =
3 8 15 28 40 54 21 40 18

矩阵下标

A=magic(5)
B=A(2,3)
C=A(2,:)
D=A(3,:)%冒号表示取全部
[m,n]=find(A>17)%find函数表示取满足的值

结果

A =
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
B =
7
C =
23 5 7 14 16
D =
4 6 13 20 22
m =
2
1
5
4
5
3
4
3
n =
1
2
2
3
3
4
4
5

逻辑和流程控制

for循环语句
for循环语句允许按照给定的判断范围或给定的循环次数重复完成一次或多次运算-它从for 开始,用end 结束,也称为for … cnd结构,它的基本格式为:
for 循环变量=初值:步长:终值
执行语句1

执行语甸n
end
其中,步长的默认值为1,可以省略;初值、步长,终值可以是正数也可以是负数,还可以是整数,也可以是小数,只要符合数学逻辑即可。

例如1:这里计算的是1到5的平方和相加

sum=0;
for i=1:5
sum=sum+i*i
end

结果

sum=55;

例如2:这里计算1到5的阶乘的累加和

for i=1:5
sum=0;
p=1;
for j=1:i
p=p*i
end
sum=sum+p
end

结果

sum =
3125

while循环

while循环结构。它根据给定的条件,决定是否以不确定的循环次数来执行循环语句体,该循环结构的基本格式为:
while条件表达式
执行语句1
:
执行语句n
end
其执行方式为:若条件表达式中的条件成立,则执行循环语句体;如果表达式不成立,则执行end后面的语句。

例如:求1到10的和

i=0;
s=0;
while i<=10
s=s+i
i=i+1
end

结果

sum=55

分支结构
1.if … end 结构
这种分支结构是该结构中最简单的一种应用形式,它的结构格式为:
if条件表达式
:
语句体

end
该结构只有一个判断语句,当条件表达式为真时,就执行语句体;如果条件表达式为假,则跳出条件体,而直接执行end后面的语句。

2.if …else …end

switch case
3. switch … case … end结构
switch … case … cnd结构是通过与某个表达式的值进行比较,根据比较的结果做不同的选择,以实现程序的分支功能,它的结构格式为:
switch表达式(数值成字符串)
case最值或字符串1
语句体;
case数值或字符串2
语句体2;
:
otherwise
语句体n;
end
switch后面表达式的值为数值变量或字符变量,通过这些值与case后面数值或字符串的值进行比较,与哪一个 case的值相同就执行哪一个case下面的语句体,如果与所有case
的值都不相同,则执行 otherwisc下面的语句体。otherwise语句可以省略,如果省略otherwise,所有case都不满足时跳出分支结构,另外 switch必须与end 配对使用。

两种引号的使用

在这里插入图片描述
在这里插入图片描述
注意!!!双引号生成一个string类型变量,单引号生成多个char类型变量。

二维平面绘图

x = 0:0.01:2pi%x坐标
y = sin(x)%y坐标
figure%figure生成图形窗口
plot(x,y)%plot线性坐标图形绘制
title(‘y=sin(x)’)%title给图形加标题
xlabel(‘x’)%给x轴加注释
ylabel(‘sin(x)’)%y轴加注释
xlim([0 2
pi])%限制x轴长度

在这里插入图片描述
在这里插入图片描述
可以修改相应的参数

例如:

x=0:0.01:20;
y1=200exp(-0.05x).sin(x);
y2=0.8
exp(-0.5*x).sin(10x);
figure
[AX,H1,H2]=plotyy(x,y1,x,y2,‘plot’)%plotyy共用一y上有不同的取值。
set(get(AX(1),‘Ylabel’),‘string’,‘slow Decay’);
set(get(AX(2),‘Ylabel’),‘string’,‘Fast Decay’);
xlabel(‘Time’)
title(‘multiple Decay Rate’)
set(H1,‘LineStyle’,‘–’)%设置线段H1的格式
set(H2,‘LineStyle’,‘:’)%设置线段H2的格式

一:线图

plot函数用来创建x和y值的简单线性代图
在这里插入图片描述
多组函数显示在同一个图上
在这里插入图片描述

二:条形图

bar函数创建垂直条形图
barh函数创建水平条形图
在这里插入图片描述结果在这里插入图片描述

极坐标系

polarplot函数用来绘制极坐标
在这里插入图片描述

散点图

scatter用来绘制x和y的散点图
在这里插入图片描述
randn(行,列):生成符合正态分布的随机数

三维绘图

t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)%三维线性绘图
xlabel(‘sin(t)’)
ylabel(‘cos(t)’)
zlabel(‘t’)
grid on%matlab中grid on的作用是显示轴网格线
axis square%将当前坐标系图形设置为方形。横轴及纵轴比例是1:1

simuink仿真

快捷键 ctrl+R:翻转
ctrl+俩模块:连接俩模块
ctrl+总线:引出支线

仿真顺序

  1. 写出数学表达式
  2. 将数学模型转化为框图形式
  3. 转化为simulink模块
  4. 设置初始值
  5. 进行仿真

常用模块及其子系统
创建子系统的快捷键:Ctrl+G

子系统作用:可以将几个具有相似功能的模块封装在一个子系统里,子系统左右各有一个In和out端口。
在这里插入图片描述
Ground和terminator模块
ground:接地模块
作用:Ground 模块连接到其输入端口不连接到其他模块的模块。如果您使用具有未连接的输入端口的模块运行仿真,Simulink® 会发出警告。使用 Ground 模块将那些未连接的模块接地可以防止出现这些警告。

terminator:终端模块
作用:用 Terminator 模块终止输出端口未连接其他模块的模块。如果您运行的仿真中有一些模块的输出端口未连接任何模块,Simulink® 将发出警告消息。使用 Terminator 模块终止这些模块,可以防止出现此类警告消息。

常量和加减乘除模块
contant:常量模块
作用:Constant 模块生成实数或复数常量信号。使用此模块提供常量信号输入。此模块是生成标量、向量还是混合输出要取决于:
Constant value 参数的维度
Interpret vector parameters as 1-D 参数的设置
双击contant模块后,选择1—D表示把常量看成一维数组,取消表示看成矩阵
在这里插入图片描述
sum:累加减模块
作用:Sum 模块对输入信号执行加减运算。Add、Subtract、Sum of Elements 和 Sum 模块是相同的模块。此模块可对标量、向量或矩阵输入执行加减运算。它还可以缩减信号的元素并执行求和。
模块的加减模式和模型外形可以双击之后设置。
在这里插入图片描述
在这里插入图片描述
product:乘除模块
在这里插入图片描述
总线和示波器模块
总线:Bus Creator 模块可将一组信号合并成一条总线。要使用 Bus Creator 模块捆绑一组信号,请将模块参数 Number of inputs 设置为该组中的信号数目。模块将显示您指定的输入端口数目。将要分组的信号连接到生成的输入端口。

示波器
不要在库中使用 Scope 模块。如果您将 Scope 模块放在具有锁定链接的库或者锁定的库中,当尝试打开 Scope 窗口时,Simulink 会显示错误。要显示某个库模块中的内部数据,请为库模块添加一个输出端口,然后将此端口连接到您模型中的 Scope 模块。
如果步进模型,波形仅在示波器模块运行时才会更新。这意味着状态栏中显示的时间可能与模型时间不匹配。
示波器模块在连接到常量信号时将绘制单个点。

复用器和分数器模块

在这里插入图片描述
Demux 模块提取输入向量信号的分量,再将它们输出为单独的信号。输出信号端口从上到下排列。有关创建和分解向量的信息

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会变身的火娃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值