应用Multism交流扫描产生的数据结合Matlab脚本拟合曲线估算线路传递函数

7 篇文章 13 订阅
1 篇文章 0 订阅

本文是阅读《数字电源控制环路设计指导书》后的一个衍生和实践。阐述的是用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()工具,我们可以在这里看到传递函数:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值