%----------------完成于2009-5-25-16:25-----------------
%-修改1
% 由于本程序没有考虑没有有限零点的情况(也即所有零点都为无穷零点),所以在计算P(s)时出错
% 因为当所有零点都为无穷零点时,P(s)=1,而对常数做expand运算会报错!故本程序需要做些修改。修改处见注释-修改1!
%---------------------2009-5-9 17:15------------------
%-修改2
% 由于之前程序用的是w域的零点,这带来很大的不便。故改为直接用s域的零点
% 把Recursive Technique过程改了
%---------------------2009-5-18 15:30----------------
function [F_s,P_s,E_s,ep]=F_P_E(s_zero,RL)
% s_zero为s域的传输零点(包括无穷远零点)
% RL---带内波纹系数(dB)
% F_s,P_s,E_s分别为F(s)、P(s)、E(s)的系数(归一化)
% clear
% clc
% s_zero=[-3.7431*i,-1.8051*i,1.5699*i,6.1910*i];
% RL=22;
% s_zero=[-0.1546*i-0.9218,-0.1546*i+0.9218,1.2576*i,inf,inf,inf,inf]
N=length(s_zero);
%----------a--使用Recursive Technique来得到F(s) P(s)的系数------------
s_zero_recip=i./s_zero; %-----------修改2
s_z_r2=s_zero_recip.^2;
syms s
u(1)=-i*s-s_zero_recip(1);
v(1)=sqrt(-s^2-1)*sqrt(1-s_z_r2(1));%
p_s(1)=(1+i*s*s_zero_recip(1));
for k=2:N;l=k-1;
u(k)=-i*s*u(l)-u(l)*s_zero_recip(k)+v(l)*sqrt(-s^2-1)*sqrt(1-s_z_r2(k));
v(k)=-i*s*v(l)-v(l)*s_zero_recip(k)+u(l)*sqrt(-s^2-1)*sqrt(1-s_z_r2(k));
p_s(k)=p_s(l)*(1+i*s*s_zero_recip(k));
end
%------------------------得到F(s)----------------------------
fs=simple(vpa(expand(u(N)),8));
F_s=sym2poly(fs);
F_s=F_s./F_s(1); % 化为首1多项式的形式
Poles=roots(F_s); % 极点
%------------------------得到P(s)----------------------------
if p_s(N)==1 %--修改1--考虑所有零点都为无穷零点的情况
P_s=1;
else
ps=simple(vpa(expand(p_s(N)),8));
P_s=sym2poly(ps);
P_s=P_s./P_s(1); % 化为首1多项式的形式
end
nfz=length(P_s)-1; % 有限传输零点个数
if rem(N-nfz,2)==0 %-------如果"阶数-有限零点个数=偶数",则P(s)的系数乘以i
P_s=i*P_s
end
Np=length(P_s);
Nf=length(F_s);
zer=zeros(1,(Nf-Np)); %-需要添加的0的个数
P_s=conv([zer 1],P_s) %-在P_s2前添加0
%-----------a--------------------------------------------------------
%-----------b----库用求出的F(s) P(s)来求出E(s)-----------------------
rl=RL;
ep=1/sqrt(10^(0.1*rl)-1.0)*abs(polyval(P_s,i)/polyval(F_s,i)) % 带内回波损耗
tep=1/sqrt(10^(0.1*rl)-1.0)*(polyval(P_s,i)/polyval(F_s,i)) % 真实的ep,没有加绝对值!
%----------------b1--利用多项式系数的操作来求E(s)----------------------
es2=conv(P_s./tep,P_s./tep)+conv(F_s,F_s); % 由于在上面的Recursive Technique时已将epR考虑在F(s)中,故此处不需用F_s/epR
% i.e 如果在Recursive Technique时将F_s/epR替代F_s,那么此处也需作替代!
%-----------------b1--------------------------------------------------
E_s_root=roots(es2);
%--------------------------------------------
% 当两个根都在虚轴上时,怎么取舍?、?
E_s_root(find(real(E_s_root)>0))=[] ; % 除去右半平面的根
E_s=poly(E_s_root) % 由左半平面的根得出E(s)的系数
%------------b--------------------------------------------------------
Source-Load-Coupling.rar_MATLAB负载_coupling matrix_matlab耦合矩阵_耦合_
版权申诉
5星 · 超过95%的资源 60 浏览量
2022-09-23
11:29:06
上传
评论
收藏 10KB RAR 举报
钱亚锋
- 粉丝: 89
- 资源: 1万+
最新资源
- 基于ARM的指令调度和延迟分支
- 基于Vue和TypeScript的极简聊天应用设计源码 - HasChat
- 基于Vue2全家桶和Zcool数据的图片收集网站设计源码 - cool-picture
- 基于C和C++的二维绘制工具设计源码 - DrawPro
- Object.defineProperty 的 IE 补丁object-defineproperty-ie-master.zip
- 整卷预览.mhtml
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见
- MySQL是一种广泛使用的开源关系型数据库管理系统,它提供了丰富的SQL语句用于数据库的创建、查询、更新和管理 以下是一些常见的
- 基于Javascript的结婚请帖设计源码 - Invitation
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈