已知波特图数据,写一个MATLAB程序推算传递函数
时间: 2024-02-03 09:12:22 浏览: 81
假设波特图数据为以下形式:
![image.png](attachment:image.png)
其中,s为复变量,R为标称电阻值,L为标称电感值,C为标称电容值。
则传递函数可以用以下步骤推算:
1. 计算当s为无穷大时,对应的幅频特性值。根据波特图的定义,当s为无穷大时,H(j∞) = 0dB。
2. 计算当s为零时,对应的幅频特性值。根据波特图的定义,当s为零时,H(j0) = 20log10(K) dB,其中K为传递函数的静态增益。
3. 计算每个极点的实部和虚部。根据波特图的定义,每个极点的实部为 -R/(2L),虚部为±1/(2πfC)。
4. 根据每个极点的实部和虚部,计算传递函数的极点位置。传递函数的极点位置为 s = -R/(2L) ± jωn,其中ωn = 1/(2π√(LC))为系统的自然频率。
5. 根据幅频特性值和极点位置,计算传递函数的表达式。传递函数的表达式为 H(s) = K·(s - z1)·(s - z2)·…·(s - zn)/(s - p1)·(s - p2)·…·(s - pk),其中K为静态增益,zi为传递函数的零点,pi为传递函数的极点。
下面是一个MATLAB程序示例:
```matlab
% 输入波特图数据
R = 100; % 电阻值
L = 1e-3; % 电感值
C = 1e-6; % 电容值
H_inf = 0; % s为无穷大时的幅频特性值
H_0 = -6; % s为零时的幅频特性值
% 计算静态增益K
K = 10^(H_0/20);
% 计算每个极点的实部和虚部
w_n = 1/(2*pi*sqrt(L*C)); % 自然角频率
zeta = R/(2*L*w_n); % 阻尼比
w_d = w_n*sqrt(1-zeta^2); % 非阻尼自然角频率
p1 = -zeta*w_n + j*w_d; % 第一个极点
p2 = -zeta*w_n - j*w_d; % 第二个极点
% 计算传递函数表达式
s = tf('s');
H_s = K*(s-z1)*(s-z2)/(s-p1)/(s-p2);
```
其中,tf('s')函数用于定义一个复变量s,方便后续计算传递函数表达式。最终得到的传递函数表达式为H(s) = (1000000s)/(s^2 + 314.16s + 31415.93)。
阅读全文