博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab norm函数使用_在matlab中使用frestimate函数来进行频率响应分析
阅读量:4955 次
发布时间:2019-06-12

本文共 2125 字,大约阅读时间需要 7 分钟。

前言:

    本文基于Matlab2018版本。

   前几天蓝总告诉了我,matlab的一个功能可以直接扫描系统的频率响应,再根据频率响应数据来得到传递函数的办法。于是我跟着Help文件研究了一下,下文是基本实现:

S1,设置扰动信号注入的点和响应信号的捕获点,如下面的代码是把扰动注入到占空比上,响应信号是采样输出电压。

c09b1745e3b33a59e099b6ed425f587f.png

% Open the Simulink model.

mdl = 'ZVSFB1';

open_system(mdl);

ios = [...

    linio([mdl,'/DutyCycle'],1,'input'); ...

    linio([mdl,'/Volt_sen'],1,'output')];

S2 然后开始设置输入扰动信号的频率范围,这里我设置 100 ~ 20000的频率范围,扰动是正弦波注入,幅度是0.05。

f = logspace(log10(100),log10(200000),30);

in = frest.Sinestream('Frequency',f,'Amplitude',0.05); 

getSimulationTime(in)/0.02

运行波形:

234aaa78ecd615b355d49399a7330456.png

  上图是正在扫频率响应的波形,是不是有内味了。

S3 设置频率响应数据:

[sysData,simlog] = frestimate(mdl,ios,in);

bopt               = bodeoptions;

bopt.Grid          = 'on';

bopt.PhaseMatching = 'on';

figure, bode(sysData,'*r',bopt)

输出频率响应测试的增益和相位图:

33cc7f6b01016759f4957f54a60b25ab.png

frest.simView(simlog,in,sysData);

输出频率响应测试数据:

9d78a23ac91dd0b1ed7d1b2e5190a63f.png

S4 根据频率响应数据拟合生成传递函数:

sysA = tfest(sysData,4, 3)  %4P,3Z分析

figure, bode(sysData,'r*',sysA,bopt)

输出Bode图:

fec5c23f3e53d0408288e22f2282aee8.png

传递函数:

sysA =

  From input "DutyCycle" to output "Volt_sen":

     2.114e04 s^3 + 8.295e08 s^2 + 3.499e10 s - 1.652e13

  ---------------------------------------------------------

  s^4 + 1.532e04 s^3 + 2.136e08 s^2 + 3.971e09 s - 4.254e12

Continuous-time identified transfer function.

Parameterization:

   Number of poles: 4   Number of zeros: 3

   Number of free coefficients: 8

   Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                    

Estimated using TFEST on frequency response data "sysData".

Fit to estimation data: 94.78%                             

FPE: 0.0214, MSE: 0.01239      

end~~~

附录matlb code:

% Open the Simulink model.

mdl = 'ZVSFB1';

open_system(mdl);

ios = [...

    linio([mdl,'/DutyCycle'],1,'input'); ...

    linio([mdl,'/Volt_sen'],1,'output')];

f = logspace(log10(100),log10(200000),30);

in = frest.Sinestream('Frequency',f,'Amplitude',0.05); 

getSimulationTime(in)/0.02

[sysData,simlog] = frestimate(mdl,ios,in);

bopt               = bodeoptions;

bopt.Grid          = 'on';

bopt.PhaseMatching = 'on';

figure, bode(sysData,'*r',bopt)

frest.simView(simlog,in,sysData);

sysA = tfest(sysData,4, 3)

figure, bode(sysData,'r*',sysA,bopt)

仿真文件下载:

微信回复 ZVSFB_FRESR

 致谢:

  感谢蓝总的帮助与分享,非常感谢。

关于本人:

  我是杨帅,是有六年电源硬件开发和三年软件开发的电源农民工,使用仿真软件已有六年。从模拟控制开始使用pspice和simlpis,到现在数字控制使用matlab和plecs,期间使用过多款仿真软件,也积累了一些使用心得。本着交流技术,分享经验的理念开通了公众号,欢迎大家关注。

37ae0251077ddf03695f9a94a682fd03.png

转载地址:http://lguhp.baihongyu.com/

你可能感兴趣的文章
使用axel下载百度云文件
查看>>
Qt中图像的显示与基本操作
查看>>
详解软件工程之软件测试
查看>>
WCF(二) 使用配置文件实现WCF应用程序
查看>>
【CodeForces 803 C】Maximal GCD(GCD+思维)
查看>>
python 去掉换行符或者改为其他方式结尾的方法(end='')
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>