Matlab 实现连续PID环节与标记系统-3dB点
Matlab 实现连续PID环节
连续PID环节传递函数:
\]
使用Matlab脚本实现连续PID环节传递函数:先用一个\(K_P\)环节,然后与积分环节 \(K_I / s\) 并联,然后再与微分环节 \(K_D * s\) 并联,即得到了连续PID环节的传递函数。之后再与系统开环传递函数串联,之后再增加负反馈,即可得到闭环控制系统传递函数。具体是实现代码:
clc;
clear;
close all;
Target = 1000; %目标值
sys1= tf([0,300,200,350],[1,0.5,0.05,0]); %建立被控对象传递函数 零点为-1 极点为-50
%sys2=tf([0.02 1],1); %建立被控对象传递函数 无零点 极点为-20
%PID传递函数
Kp = 1;
Ki = 0.1;
Kd = 0;
sysP = Kp;
sysI = tf(Ki,[1,0]);
sysD = tf([Kd,0],1);
sysPI = parallel(sysP,sysI); %将比例积分微分环节并联得到PID传递函数
sysPID = parallel(sysPI,sysD);
sysG = series(sysPID,sys1); %将两传递函数串联 得到最终的传递函数G
sysH = 1; %反馈函数为空
sysResult = feedback(sysG,sysH); %负反馈
step(Target * sysResult,0.5); %串联并加入反馈后的传递函数阶跃
得到曲线如下:

标记-3dB点
% 频段带宽
f_begin = 1e-3;
f_final = 1e3;
f = linspace(f_begin,f_final,1e6)';
% 传递函数
sysHclose = feedback(sysG,sysH); % 负反馈 闭环传递函数
% 计算幅频和相频响应
h = freqs(cell2mat(sysHclose.num),cell2mat(sysHclose.den),w);
amplitude = abs(h); % 幅频响应
mag = 20*log10(amplitude);
phase = angle(h); % 相频响应
phesedeg = phese*180/pi;
% 绘图
figure;
subplot(2,1,1)
semilogx(f,mag);
grid on; xlim([f_begin f_final]);
subplot(2.1.2)
semilogx(f,phesedeg);
grid on; xlim([f_begin f_final]);
% -----添加谐振点-----
magnitude = mag;
[magmax,fmax] = max(magnitude); %谐振点为幅频曲线的极值点
fmax = f(fmax);
plot(fmax,magmax,'o','LineWidth',2,'MarkerSize',5,'MarkerEdgeColor','k')
text(fmax,magmax-2,sprintf('Resonance point:\n(%.3f Hz, %.3f dB)',fmax,magmax),...
'VerticalAlignment','top','HorizontalAlignment','right')
%'VerticalAlignment','bottom'
hold on;
% -----添加-3dB带宽点-----
B=abs(magnitude+3.0);
[x,index]=sort(B); %为了得到最接近-3dB的值,先对绝对值进行排序,index为排序前的坐标值
mag_3db=magnitude(index(1));
f_3db=f(index(1));
plot(f_3db,mag_3db,'o','LineWidth',2,'MarkerSize',5,'MarkerEdgeColor','r')
text(f_3db,mag_3db,sprintf('Cut-off point:\n(%.3f Hz, %.3f dB)',f_3db,mag_3db),...
'VerticalAlignment','bottom','HorizontalAlignment','left') %在目标坐标点处添加文字
示例图片如下

Matlab 实现连续PID环节与标记系统-3dB点的更多相关文章
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- 在论坛中出现的比较难的sql问题:29(row_number函数 组内某列的值连续出现3次标记出来)
原文:在论坛中出现的比较难的sql问题:29(row_number函数 组内某列的值连续出现3次标记出来) 在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘 ...
- Codeforces Round #383 (Div. 2) A,B,C,D 循环节,标记,暴力,并查集+分组背包
A. Arpa’s hard exam and Mehrdad’s naive cheat time limit per test 1 second memory limit per test 256 ...
- MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)
关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...
- MATLAB仿真中连续和离散的控制器有何区别?
matlab系统同时提供连续和离散的控制器和对象的目的是:在降低用户使用复杂程度的同时提高仿真精度.仿真速度和应用的广泛性. 仿真步长和求解精度的概念对于理解这个问题至关重要. 首先是步长,步长和求解 ...
- 【我是老中医】Win10系统下MATLAB无法正常打开的解决方案
转眼大四了,要开始做毕设了,导师给的题目要用到他之前做的东西,都是MATLAB做的,所以不太熟悉MATLAB的我也得用这玩意儿了,想想自己目前也就大二的DSS实验和大三的AI实验用过MATLAB,当时 ...
- PID控制算法的C语言实现
参考: PID控制器开发笔 浅谈位置式PID 专家PID控制在快速系统中的仿真及应用(这篇了论文介绍的积分分离PID.专家PID(脚本实现和simulink实现)很详细) PID控制算法的C语言实现一 ...
- PID控制器(比例-积分-微分控制器)- I
形象解释PID算法 小明接到这样一个任务: 有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水. 小明接到任务后就一直守在水 ...
- SIMATIC PID温度控制
SIMATIC PID温度控制 // VAR_INPUT ------------------------------------------------------------------- #if ...
- PID控制算法的C语言实现一 PID算法原理
本系列是转载............. 全部的程序有一个共同点:就是我没认真去调pid的参数 在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设 ...
随机推荐
- [ARM 汇编]进阶篇—存储访问指令—2.3.2 多数据传输指令
在 ARM 汇编中,多数据传输指令用于一次性从存储器中加载多个数据到寄存器组,或将寄存器组中的多个数据存储到存储器.这些指令通常用于高效地处理数组.结构体等数据结构.在本节中,我们将详细介绍 ARM ...
- 前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用
前端Vue自定义顶部搜索框 热门搜索 历史搜索 用于搜索跳转使用, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13128 效 ...
- TypeScript又出新关键字了?
TypeScript 5.2将引入一个新的关键字:using.当它离开作用域时,你可以用Symbol.dispose函数来处置任何东西. { const getResource = () => ...
- Dlang 并行化
Dlang 并行化 好难受,dlang 生态太差,没办法,学了半天才明白. 我尽量以精炼的语言解释. 采用 定义,例子(代码),解释 的步骤讲解. 所以你可能看到很多代码,一点解释-- 我会省略一些 ...
- java解析CSV文件(getCsvData 解析CSV文件)
首先需要下载opencsv的jar包 <!-- https://mvnrepository.com/artifact/com.opencsv/opencsv --> <depende ...
- SVE学习记录- SVE特性以及寄存器
本文地址:https://www.cnblogs.com/wanger-sjtu/p/SVE_learn_0.html SVE对比NEON有几个新增的地方. 变长的向量 支持Gather-load & ...
- Easygraph:全面高效的图分析与社会计算开源工具
前言图是对事物之间关系的一种原生的表达,利用图可以深入直接地认识世界中的关联.社交网络.交易数据.知识图谱.交通运输.生物技术等都是图数据的典型应用.社交网络是一种特殊的图数据,它建立在图网络的基础上 ...
- JVM 常见错误汇总
栈内存溢出 栈内存错误包括:栈帧过多(StackOverflowError).栈帧过大(OutOfMemoryError) StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的 ...
- 我用WebGL打造了一款动态壁纸
我用WebGL打造了一款动态壁纸 简述 最近在给自己电脑换壁纸的时候发现了一张很有特点的图(就是下面这张),于是我突发奇想,要是能把这张图变成一张动态的壁纸.那该多好.于是我打算用threejs开发一 ...
- 好用工具: Carbon--代码美化工具
问题背景 当进行PPT展示时,如果只是简单的复制粘贴代码.会看起来很难看,因此产生美化的想法. 使用方式 官网链接 https://carbon.now.sh