一阶惯性环节matlab编程_matlab一阶惯性环节

一阶惯性环节matlab编程_matlab一阶惯性环节该楼层疑似违规已被系统折叠隐藏此楼查看此楼我照着网上的程序自己改出来的程序是这样的clc;clear;ts=0.001;%采样时间sys=tf(-53,[19926,100],’ioDelay’,540);%tf是传递函数,用来实现G(s);在自动控制领域经常用到,dsys=c2d(sys,ts,’z’);%把控制函数离散化,转化…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我照着网上的程序自己改出来的程序是这样的

clc;

clear ;

ts=0.001; %采样时间

sys=tf(-53,[19926,100],’ioDelay’,540); %tf是传递函数,用来实现G(s); 在自动控制领域经常用到,

dsys=c2d(sys,ts,’z’); %把控制函数离散化,转化为拆分方程

[num,den]=tfdata(dsys,’v’); % 离散化后提取分子、分母 ,提取拆分方程系数

u_0=0.0;

u_1=0.0;

u_2=0.0;

y_1=0.0;

y_2=0.0;

x=[0,0,0]’;

error_1=0;

error_2=0;

for k=1:1:1000000

time(k)=k*ts; %采样次数

S=1; %选择需要跟踪的函数

if S==1

kp=-2.5237;ki=-025316;kd=18.2627; %初始化PID

rin(k)=1; %Step Signal ,阶跃信号

end

if S==2

kp=x;ki=x;kd=x;

rin(k)=0.5*sin(2*pi*k*ts); %Sine Signal 正弦信号

end

if S==3 %三角波信号

kp=x;ki=x;kd=x;

if mod(time(k),2)<1

rin(k)=mod(time(k),1);

else

rin(k)=1-mod(time(k),1);

end

rin(k)=rin(k)-0.5;

end

if S==4 %锯齿波信号

kp=x;ki=x;kd=x; %测试得合适参数,如果输出过冲,可将kd调小。

rin(k)=mod(time(k),1);

end

du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller 控制系数

u(k)=u_1+du(k);

%Linear model

yout(k)=-den(2)*y_1+num(1)*u_0+num(2)*u_1; %实际输出

error(k)=rin(k)-yout(k); %Return of parameters 误差

u_2=u_1; %保存上上次输入 为下次计算

u_1=u(k); %保存上一次控制系数 为下次计算

y_2=y_1; %保存上上次次输出 为下次计算

y_1=yout(k); %保存上一次输出 为下次计算

x(1)=error(k)-error_1; %Calculating P

x(2)=error(k)-2*error_1+error_2; %Calculating D

x(3)=error(k); %Calculating I

error_2=error_1;

error_1=error(k);

end

figure(1);

plot(time,rin,’b’,time,yout,’r’); %输入 和实际控制输出

xlabel(‘time(s)’),ylabel(‘rin,yout’);

axis([0,1000,0,1.2]);

% figure(2);

% plot(time,error,’r’) %输入与输出误差输出曲线

% xlabel(‘time(s)’);ylabel(‘error’);

得到的图形是这样的

5331104c75716c236664e4710d3946ce.png

我用Simulink得到的图是这样的

21ca07a2b5b5dd4e3d7816de6d945411.png

有大佬告诉我一下我的程序哪里出错了吗

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185896.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月4日 下午9:16
下一篇 2022年10月4日 下午9:16


相关推荐

  • G1收集器详解「建议收藏」

    G1收集器详解「建议收藏」CMS垃圾收集器的弊端:会产生内存碎片&&需要预留空间。这两个问题在处理时,很有可能会导致停顿时间过长,即CMS的停顿时间不可预知。所以G1又可以理解为在CMS垃圾收集器上进行了”升级”。G1垃圾收集器可以给你设定一个你希望Stoptheworld停顿时间,G1会根据这个时间尽量满足你。在JVM堆中,堆的内存分布是以物理空间进行隔离——但是在G1垃圾收集器中,堆的划分不再是物理形式,而是以逻辑的形式进行划分。但是,分代的概念在G1中依旧奏效,比如,新对象一般会被分配.

    2022年5月2日
    34
  • Java遍历json_java处理json数据

    Java遍历json_java处理json数据今天需要遍历一下json,但是只查到了遍历一层json的文章,满足不了多层级的json遍历。所以自己写一下,用fastJson处理。所遍历json需要考虑一下多层级的json,需要考虑的就是JSONObject和JSONArray两种情况,对这两种情况做处理,采用递归向下遍历,用instanceof判断递归到的类型,做不同处理。下边贴上代码:publicclassJsonLo…

    2025年8月29日
    6
  • c语言中函数指针用法,C语言函数指针的用法

    c语言中函数指针用法,C语言函数指针的用法这篇文章简单的叙述一下函数指针在结构体中的应用 为后面的一系列文章打下基础引言指针是 C 语言的重要组成部分 于是深入理解指针并且高效地使用指针可以使程序员写出更加老练的程序 我们要记住指针是一个指向内存地址的变量 指针可以引用如 int char 常见的数据类型 例如 int intptr 声明一个指向整型值的指针 intintval 5 定义一个整型变量 int

    2026年3月19日
    2
  • jsonObject.getString()与jsonObject.optString()「建议收藏」

    jsonObject.getString()与jsonObject.optString()「建议收藏」常见使用原生的解析json方法:JSONObjectjsonObject=newJSONObject();Stringstr1=jsonObject.optString(“6不6”);Stringstr2=jsonObject.optString(“6不6″,”默认6”);try{Str

    2025年11月19日
    7
  • 微信三级分销合法吗

    微信三级分销合法吗随着微商的快速崛起,越来越多的微信用户开始做微商赚取外快,身边的朋友也慢慢接受朋友圈满天飞的广告信息。当然,很多主流媒体也开始进行微商的正面报道,但,微信分销(微商)和我们所接触的传销是在太像了,这让我们不仅要问,微信分销真的合法吗?时下流行的微信三级分销究竟是不是传销,相比看完这篇文章您就知…

    2022年5月16日
    49
  • 锚点用法

    锚点用法nbsp 一 常见用法 nbsp 1 给指定标签添加 id 和 name id 或 name 都可以实现锚点 id 是 name 的升级版 更有效 可以只用 id nbsp 2 给 a 标签的 href 绑定想要跳转到的位置的 id nbsp 二 js 锚点定位 document getElementBy divId scrollIntoVi 我参考的这篇文章 讲的很详细了 https www cnblogs

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号