<用实验数据画伯德图-知识大全-龙咔百科
> 知识大全 > 列表
用实验数据画伯德图
时间:2024-12-23 16:05:12
答案

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

%幅度

c1=[数据];

c=c1/c(1);

%相位

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

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

%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=c.*exp(i*w');

%频率

x1=[数据];

%换成单位是rad/s

x=2*pi*x1;

%换成单位是dB

yy=20*log10(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)

推荐
© 2024 龙咔百科