如何用MATLAB准确画出零阶保持器的bode图,就是下图。

如何用MATLAB准确画出零阶保持器的bode图,就是下图。,第1张

取T=03为例:

s=tf('s');

G=ss(1/s)-ss(tf(1,[1 0],'iodelay',T));

[mag,phase,w]=bode(G,{1e-5 42pi/T});

subplot 211; plot(w,mag(:))

subplot 212; plot(w,phase(:))

也可以借助于符号运算:

syms s

G=(1-exp(-Ts))/s;

syms w positive

Gjw=subs(G,s,jw);

W=(0:01:4)2pi/T;

G1=subs(Gjw,w,W);

subplot 211; plot(W,abs(G1))

subplot 212; plot(W,angle(G1))

原因是,网上流传的R2012b版破解方法,很多都破解不充分,导致大名鼎鼎的Control System都不能装上,而bode正是控制系统工具箱的函数。

具体请参考我以前的回答:

>

做图时采用折线近似的方法画出的对数频率特性。 

画波特图时,分三个频段进行,先画幅频特性,顺序是中频段、低频段和高频段。将三个频段的频率特性合起来就是全频段的幅频特性,然后再根据幅频特性画出相应的相频特性来。

刚做了 哈哈 等一下 发给你 有问题再追问我

%幅度

c1=[数据];

c=c1/c(1);

%相位

w=[数据,注意单位是度]/180pi;

%for语句的功能和下面那行H=cexp(iw');是一样的,将幅度和相位转化成复数点

%for k=1:length(c)

% a(k)=c(k)cos(w(k));

% b(k)=c(k)sin(w(k));

% y(k)=a(k)+b(k)i;

%end

%下面这行注意去掉(加上)点乘,和矩阵的运算有关

H=cexp(iw');

%频率

x1=[数据];

%换成单位是rad/s

x=2pix1;

%换成单位是dB

yy=20log10(c);

%拟合传函,你可以help invfreqs看看这个函数怎么用

%invfreqs里面的2,3分别是分子分母的阶数

%[]和12是使得拟合出的传函是稳定的

%12是迭代次数(尽量高,但高了也可能跑不出来)

[num,den]=invfreqs(H,x,2,3,[],12);

G=tf(num,den);

%[z,p,k]=tf2zp(num,den) ;

%num,den和z,p,k是传函的两种形式

figure(1)

%下面这行是画数据点图,可以不要

%plot(x1,yy)

%将横坐标画为对数坐标

%semilogx(x1,yy)

%hold on

%画bode图

bode(G)

以上就是关于如何用MATLAB准确画出零阶保持器的bode图,就是下图。全部的内容,包括:如何用MATLAB准确画出零阶保持器的bode图,就是下图。、用matlab 2012b画伯德图时为什么总有下面的错误求助!、伯德图怎么画等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9331498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存