我是靠谱客的博主 独特店员,最近开发中收集的这篇文章主要介绍应用Multism交流扫描产生的数据结合Matlab脚本拟合曲线估算线路传递函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文是阅读《数字电源控制环路设计指导书》后的一个衍生和实践。阐述的是用Multism做一个模拟线路的频率响应曲线后导出成Excel文件后,再用Matlab去拟合出曲线从而估算出模拟线路的传递函数。该方法具有普适性,仿真软件不局限于文中提到的软件。其中模拟线路以之前讨论过的三型补偿网络。

一、Multism频率响应

首先在Mutism中绘制如下原理图,并配置好参数,将探针放置在输出的位置:
在这里插入图片描述
选择交流分析,并设置好交流分析的参数:
在这里插入图片描述
开始仿真,得到以下图形:
在这里插入图片描述
点击工具,选择导出至Excel:
在这里插入图片描述
这里有两个注意点:
1、由于频率响应有幅、相两条曲线,这里要选择不同的图形导出两次;
2、导出的幅频曲线数据的Y轴的值是按实际的值导出而不是按分贝值导出,在用matlab分析前可以现在Excel中整合下数据比较方便后边的分析;

整理后的Excel数据如下:
在这里插入图片描述

二、用Matlab进行曲线拟合

在Matlab键入以下代码:

%Read the FRA Plant data from the excel sheet%

Freq=xlsread('Frequency_Response.xlsx','幅值','A2:A600');

Phase_H=xlsread('Frequency_Response.xlsx','相位','B2:B600');

Mag_H=xlsread('Frequency_Response.xlsx','幅值','C2:C600');

 

%Convert the FRA data to a bode object in MATLAB%

Mag_H=(10.^(Mag_H./20));

Phase_H=pi.*Phase_H./180;

Plant_Bode_Obj=frd(Mag_H.*exp(i*(Phase_H)),Freq,'FrequencyUnit','Hz');

 

%Curve fit the data to get a transfer function%

% user may choose to fit 3p3z or any other depending on what works best%

[Hn,Hd] = invfreqs(Mag_H.*exp(i*(Phase_H)),(2*pi).*Freq,2,4); %using 2z4P

H = tf(Hn,Hd);

 

% plot both the measured and curve fitted TF to compare accuracy

figure(1);bode(H,Plant_Bode_Obj);title('Control-to-Output Measured Vs Curve Fitted');

legend('Curve Fitted','Measured')

 

%call sisotool to design the compensation with the transfer function%

sisotool(H)

运行得到如下图形:
在这里插入图片描述
同时脚本语言调用了sisotool()工具,我们可以在这里看到传递函数:
在这里插入图片描述

最后

以上就是独特店员为你收集整理的应用Multism交流扫描产生的数据结合Matlab脚本拟合曲线估算线路传递函数的全部内容,希望文章能够帮你解决应用Multism交流扫描产生的数据结合Matlab脚本拟合曲线估算线路传递函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部