【控制系统数字仿真与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 智能楼宇三维可视化系统
前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...
随机推荐
- react 首屏性能优化
首屏优化点:1.加载包(bundle.js)文件的大小,越小,首屏渲染速度越快 (按需加载) 2.优先渲染用户直观看到的页面部分(懒加载) 技术点:react-loadable . react-laz ...
- 网页布局——grid弹性网格布局
网格布局(Grid)是最强大的 CSS 布局方案. Flexbox 是为一维布局设计的,而 Grid 是为二维布局设计. grid目前兼容性目前还可以,主流浏览器对它的支持力度很大,ie9,10宣布它 ...
- 2016 10月15日java的动手动脑
(1) 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源程序: //随机数的产生 //zhanxinwu,October,15,2016 public class Recur ...
- How to Get What You Want 如何得到你想要的
[1]If you want something, give it away. [2]When a farmer wants more seeds, he takes his seeds and gi ...
- 配置code::blocks的glut环境
code::blocks很小,特别适合小型项目及家用旧电脑上MingW下编程,当然windows还是安装的Visual Studio办公用的,现把配置过程记录一遍. 1.在百度搜code::block ...
- CH3801Rainbow的信号
Description Freda发明了传呼机之后,rainbow进一步改进了传呼机发送信息所使用的信号.由于现在是数字.信息时代,rainbow发明的信号用N个自然数表示.为了避免两个人的对话被大坏 ...
- 【Python秘籍】numpy到tensor的转换
在用pytorch训练神经网络时,我们常常需要在numpy的数组变量类型与pytorch中的tensor类型进行转换,今天给大家介绍一种它们之间互相转换的方法. 一.numpy到tensor 首先我们 ...
- opencv::模糊图像
Smooth/Blur 是图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时候减低噪声 使用Smooth/Blur操作其背后是数学的卷积计算,通常这些卷积算子计算都是线性操作, ...
- linux下mqtt-client
CPATH += ../embe_mqtt/MQTTClient/srcPSRTPATH = ../embe_mqtt/MQTTPacket/src LOADPATH += -I$(CPATH)LOA ...
- 推荐几个IT交流社区
博客园,csdn,掘金,StackOverflow(境外),v2ex,开源中国,简书,头条