【控制系统数字仿真与CAD】实验一:状态方程、传函为模型的系统的仿真
一、实验目的
1. 掌握各数学模型之间的转换与数学模型的参数获取,掌握相关MATLAB命令
2. 掌握欧拉法和RK法的递推公式
3. 掌握欧拉法和RK法的MATLAB算法实现
二、实验内容
1. 分别用欧拉法和四阶龙格-库塔法求解如下系统:
(1) R=4KΩ, C=1µF, L=1H, 仿真时间: 0.03s
(2) R=280Ω, C=8µF, L=2H,仿真时间: 0.1s

两组参数下电路的单位阶跃响应。 (初始条件均为零)。
2. 熟悉并理解掌握MATLAB模型转换以及参数提取指令(针对上述系统写出它们的运行结果)
G=tf(num,den) G1=tf(G)
G=zpk(z,p,k) G1=zpk(G)
G=ss(A,B,C,D) G3=ss(G)
[num,den]=tfdata(G)
[Z,P,K]=zpkdata(G)
[A,B,C,D]=ssdata(G)
三、实验要求
1. 预习和完成实验内容
2. 完成实验报告,内容至少包括:理论分析,实验程序,程序运行结果以及结果分析。
四、实验内容
1.建模
列方程:

状态空间表达式(时域):

写成矩阵形式:

拉氏变换后得传递函数(复域):

2. 实验代码:
%********** 参数提取 *************
R = 4000;
C = 0.000001;
L = 1;
num = [1];
den = [L*C, R*C, 1];
G = tf(num, den)
G1 = tf(G)
G2 = zpk(G)
G3 = ss(G)
[Num, Den] = tfdata(G)
[Z, P, K] = zpkdata(G)
[A, B, C, D] = ssdata(G)
问题(1):
clear;
clc;
%******************************************%%
% Question 1
%******************************************%%
R1 = 4000;
C1 = 0.000001;
L1 = 1;
A1 = [0, 1/C1;-1/L1,-R1/L1];
B1 = [0;1/L1];
h1 = 0.00003; % step size
y1 = [0;0];
y2 = [0;0];
% ******** Euler method **********%
for i1 = 0:1:1000
t1 = i1*h1; % simulation time: 0.03s
x1(i1+1) = t1;
k1 = A1 * y1 + B1;
k2 = A1 * (y1+h1*k1) + B1;
y1 = y1 + (k1 +k2)*h1/2;
result_for_Euler_1(i1+1) = y1(1,1);
end
% ******** 4 order Runge-Kutta method **********%
for i2 = 0:1:1000
t2 = i2*h1; % simulation time: 0.03s
x2(i2+1) = t2;
k1 = A1 * y2 + B1;
k2 = A1 * (y2+h1*k1/2) + B1;
k3 = A1 * (y2+h1*k2/2) + B1;
k4 = A1 * (y2+h1*k3) + B1;
y2 = y2 + (k1 + 2*k2 + 2*k3 + k4)*h1/6;
result_for_RK_1(i2+1) = y2(1,1);
end
subplot(2,2,1);plot(x1,result_for_Euler_1,'b');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Euler method');legend('Euler');
subplot(2,2,2);plot(x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Runge-Kutta method');legend('Runge-Kutta');
subplot(2,1,2);plot(x1,result_for_Euler_1,'b', x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');
title('Comparision of results between Euler and RK');legend('Euler','Runge-Kutta');
问题(2):
clear;
clc;
%******************************************%%
% Question 2
%******************************************%%
R1 = 280;
C1 = 0.000008;
L1 = 2;
A1 = [0, 1/C1;-1/L1,-R1/L1];
B1 = [0;1/L1];
h1 = 0.0002; % step size
y1 = [0;0];
y2 = [0;0];
% ******** Euler method **********%
for i1 = 0:1:500
t1 = i1*h1; % simulation time: 0.1s
x1(i1+1) = t1;
k1 = A1 * y1 + B1;
k2 = A1 * (y1+h1*k1) + B1;
y1 = y1 + (k1 +k2)*h1/2;
result_for_Euler_1(i1+1) = y1(1,1);
end % ******** 4 order Runge-Kutta method **********%
for i2 = 0:1:500
t2 = i2*h1; % simulation time: 0.1s
x2(i2+1) = t2;
k1 = A1 * y2 + B1;
k2 = A1 * (y2+h1*k1/2) + B1;
k3 = A1 * (y2+h1*k2/2) + B1;
k4 = A1 * (y2+h1*k3) + B1;
y2 = y2 + (k1 + 2*k2 + 2*k3 + k4)*h1/2;
result_for_RK_1(i2+1) = y2(1,1);
end
subplot(2,2,1);plot(x1,result_for_Euler_1,'b');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Euler method');legend('Euler');
subplot(2,2,2);plot(x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Runge-Kutta method');legend('Runge-Kutta');
subplot(2,1,2);plot(x1,result_for_Euler_1,'b', x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');
title('Comparision of results between Euler and RK');legend('Euler','Runge-Kutta');
3. 运行结果
问题(1):

问题(2):

【控制系统数字仿真与CAD】实验一:状态方程、传函为模型的系统的仿真的更多相关文章
- 《数字信号处理》课程实验2 – FIR数字滤波器设计
一.FIR数字滤波器设计原理 本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...
- 《数字信号处理》课程实验1 – FFT的实现
一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...
- SimMechanics/Second Generation倒立摆模型建立及初步仿真学习
笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...
- mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)
前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...
- 【控制系统数字仿真与CAD】实验二:结构图法数字仿真
一. 实验目的 1. 掌握结构图法仿真复杂控制系统的方法: 2. 掌握复杂系统联接矩阵W和输入联接矩阵W0的求解过程: 3. 掌握复杂系统的环节连接,矩阵A. B. C.D的求解过程: 4. 掌握MA ...
- 【控制系统数字仿真与CAD】实验三:离散相似法数字仿真
一.实验目的 1. 了解离散相似法的基本原理 2. 掌握离散相似法仿真的基本过程 3. 应用离散相似法仿真非线性系统 4. MATLAB实现离散相似法的非线性系统仿真 5. 掌握SIMULINK仿真方 ...
- Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验
移位寄存器实现Verilog代码: `timescale 1ns / 1ps module add( input clk, input reset, input [1:0] s, input dl, ...
- 【Java基础-实验7】Banking_7 -添加银行透支扣款系统的 thorw异常机制
实验基本要求: 实验题目 7:(在6基础上修改) 将建立一个 OverdraftException 异常,它由 Account 类的withdraw()方法 抛出. 实验目的: 自定义异常 实验说明: ...
- 数字孪生,数据驱动下的北京 CBD 智能楼宇三维可视化系统
前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...
随机推荐
- C#中的等值判断1
目录 简介 值类型和引用类型的相等比较 和相等比较相关的函数 string 和 System.Uri 的等值比较 泛型接口 IEquatable<T> 自定义比较方法 举例 总结 简介 最 ...
- Git版本控制之ubuntu搭建Git服务器
Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...
- Numpy数组操作
""" Numpy 数组操作 修改数组形状 函数 描述 reshape 不改变数据的条件下修改形状 flat 数组元素迭代器 flatten 返回一份数组拷贝,对拷贝所做 ...
- tesseract 测试样例
该图片的链接为https://raw.githubusercontent.com/Python3WebSpider/TestTess/master/image.png,可以直接保存或下载. 首先用命令 ...
- Python web编程 初识TCP UDP
Python网络编程之初识TCP,UDP 这篇文章是读了<Python核心编程>第三版(Core Python Applications)的第二章网络编程后的自我总结. 如果有不到位或者错 ...
- 【原创】(八)Linux内存管理 - zoned page frame allocator - 3
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- WPF写圆形头像,带消息提醒图标
<DockPanel VerticalAlignment="Top" HorizontalAlignment="Stretch" Margin=" ...
- u盘安装操作系统相关
首先使用相关软件制作u盘启动盘,将所需要的系统镜像安装到u盘中 此时u盘中会出现一个EFI区(window可以看到,window7看不到,可以隐藏) 简单来说这个EFI分区中装的是一个低价的操作系统, ...
- Java的事件自定义事件学习
课程设计要做一个游戏,由于对C++不是很熟悉,老师也准许使用java 或者其他的语言,在.net我学过事件,一种委托回调,但是在java 我不是很了解,应该原理都相同吧! 游戏大致是这样的,现在这在写 ...
- spark cdh5编译安装[spark-1.0.2 hadoop2.3.0 cdh5.1.0]
前提你得安装有Hadoop 我的版本hadoop2.3-cdh5.1.0 1.下载maven包 2.配置M2_HOME环境变量,配置maven 的bin目录到path路径 3.export MAVEN ...