⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawdlib.m

📁 AFD - Advanced Filter Design using MATLABMiroslav D. Lutovac, Dejan V. Tosicversion 1.00 released 15
💻 M
📖 第 1 页 / 共 2 页
字号:
Clear[a,b,c,d,e,f,g,h,p,s,t,F]
Clear[x0,y0,dx,ds]
Clear[DrawAdd, DrawDel, DrawIn, DrawLine, DrawLHV, DrawLVH,
      DrawMult, DrawNode, DrawOut, DrawText, 
      DrawAmpS, DrawArea, DrawArrow, DrawBlock, 
      DrawGround, DrawZ, roman, italic, bold];

DrawMult[c_,d_,f_,t_:"",l_:"",p_:0,s_:1,F_:8] := 
Module[{a,b,g,h},
a=(f+c)/2-0.4*s;b=d;
g=c;h=(f+d)/2-0.4*s;
Graphics[Switch[p
,0
 ,{Line[({a,b}+s*#)& /@ {{0.6,0},{0.2,0.3},{0.2,-0.3},{0.6,0},{(f-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(c-a)/s,0.0},{0.2,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b+s*0.2},{-1,-3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{a+s*0.45,b+s*0.2},{-1,-1}] }
,1
 ,{Line[({g,h}+s*#)& /@ {{0,0.6},{0.3,0.2},{-0.3,0.2},{0,0.6},{0,(f-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(d-h)/s},{0,0.2}}]
 ,Text[FontForm[l,{"Times",F}],{g-s*0.2,h+s*0.45},{1,-3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{g-s*0.2,h+s*0.45},{1,-1}] }
,2
,{Line[({a,b}+s*#)& /@ {{0.2,0},{0.6,0.3},{0.6,-0.3},{0.2,0},{(c-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(f-a)/s,0.0},{0.6,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b-s*0.2},{1,3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{a+s*0.45,b-s*0.2},{1,1}] }
,3
,{Line[({g,h}+s*#)& /@ {{0,0.2},{0.3,0.6},{-0.3,0.6},{0,0.2},{0,(d-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(f-h)/s},{0,0.6}}]
 ,Text[FontForm[l,{"Times",F}],{g+s*0.2,h+s*0.45},{-1,3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{g+s*0.2,h+s*0.45},{-1,1}] }
,4
,{Line[({a,b}+s*#)& /@ {{0.6,0},{0.2,0.3},{0.2,-0.3},{0.6,0},{(f-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(c-a)/s,0.0},{0.2,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.35,b-s*0.2},{-1,3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{a+s*0.35,b-s*0.2},{-1,1}] }
,5
,{Line[({g,h}+s*#)& /@ {{0,0.6},{0.3,0.2},{-0.3,0.2},{0,0.6},{0,(f-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(d-h)/s},{0,0.2}}]
 ,Text[FontForm[l,{"Times",F}],{g+s*0.2,h+s*0.45},{-1,-3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{g+s*0.2,h+s*0.45},{-1,-1}] }
,6
,{Line[({a,b}+s*#)& /@ {{0.2,0},{0.6,0.3},{0.6,-0.3},{0.2,0},{(c-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(f-a)/s,0.0},{0.6,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b+s*0.2},{1,-3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{a+s*0.45,b+s*0.2},{1,-1}] }
,7
,{Line[({g,h}+s*#)& /@ {{0,0.2},{0.3,0.6},{-0.3,0.6},{0,0.2},{0,(d-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(f-h)/s},{0,0.6}}]
 ,Text[FontForm[l,{"Times",F}],{g-s*0.2,h+s*0.45},{1,3}]
 ,Text[FontForm[t,{"Times-Italic",F}],{g-s*0.2,h+s*0.45},{1,1}] }
]]];

DrawAmpS[c_,d_,f_,t_:"",l_:"",p_:0,s_:1,F_:8] := 
Module[{a,b,g,h},
a=(f+c)/2-0.4*s;b=d;
g=c;h=(f+d)/2-0.4*s;
Graphics[Switch[p
,0
 ,{Line[({a,b}+s*#)& /@ {{0.6,0},{0.2,0.3},{0.2,-0.3},{0.6,0},{(f-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(c-a)/s,0.0},{0.2,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b+s*0.2},{-1,-3}]
 ,Text[FontForm[t,{"Symbol",F}],{a+s*0.45,b+s*0.2},{-1,-1}] }
,1
 ,{Line[({g,h}+s*#)& /@ {{0,0.6},{0.3,0.2},{-0.3,0.2},{0,0.6},{0,(f-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(d-h)/s},{0,0.2}}]
 ,Text[FontForm[l,{"Times",F}],{g-s*0.2,h+s*0.45},{1,-3}]
 ,Text[FontForm[t,{"Symbol",F}],{g-s*0.2,h+s*0.45},{1,-1}] }
,2
,{Line[({a,b}+s*#)& /@ {{0.2,0},{0.6,0.3},{0.6,-0.3},{0.2,0},{(c-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(f-a)/s,0.0},{0.6,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b-s*0.2},{1,3}]
 ,Text[FontForm[t,{"Symbol",F}],{a+s*0.45,b-s*0.2},{1,1}] }
,3
,{Line[({g,h}+s*#)& /@ {{0,0.2},{0.3,0.6},{-0.3,0.6},{0,0.2},{0,(d-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(f-h)/s},{0,0.6}}]
 ,Text[FontForm[l,{"Times",F}],{g+s*0.2,h+s*0.45},{-1,3}]
 ,Text[FontForm[t,{"Symbol",F}],{g+s*0.2,h+s*0.45},{-1,1}] }
,4
,{Line[({a,b}+s*#)& /@ {{0.6,0},{0.2,0.3},{0.2,-0.3},{0.6,0},{(f-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(c-a)/s,0.0},{0.2,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.35,b-s*0.2},{-1,3}]
 ,Text[FontForm[t,{"Symbol",F}],{a+s*0.35,b-s*0.2},{-1,1}] }
,5
,{Line[({g,h}+s*#)& /@ {{0,0.6},{0.3,0.2},{-0.3,0.2},{0,0.6},{0,(f-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(d-h)/s},{0,0.2}}]
 ,Text[FontForm[l,{"Times",F}],{g+s*0.2,h+s*0.45},{-1,-3}]
 ,Text[FontForm[t,{"Symbol",F}],{g+s*0.2,h+s*0.45},{-1,-1}] }
,6
,{Line[({a,b}+s*#)& /@ {{0.2,0},{0.6,0.3},{0.6,-0.3},{0.2,0},{(c-a)/s,0}}]
 ,Line[({a,b}+s*#)& /@ {{(f-a)/s,0.0},{0.6,0.0}}]
 ,Text[FontForm[l,{"Times",F}],{a+s*0.45,b+s*0.2},{1,-3}]
 ,Text[FontForm[t,{"Symbol",F}],{a+s*0.45,b+s*0.2},{1,-1}] }
,7
,{Line[({g,h}+s*#)& /@ {{0,0.2},{0.3,0.6},{-0.3,0.6},{0,0.2},{0,(d-h)/s}}]
 ,Line[({g,h}+s*#)& /@ {{0,(f-h)/s},{0,0.6}}]
 ,Text[FontForm[l,{"Times",F}],{g-s*0.2,h+s*0.45},{1,3}]
 ,Text[FontForm[t,{"Symbol",F}],{g-s*0.2,h+s*0.45},{1,1}] }
]]];

DrawArea[a_,b_] := Graphics[{
 Line[{{0,0},{a,0},{a,0+b},{0,b},{0,0}}]}];

DrawArrow[a_,b_,t_:"",p_:0,s_:1,f_:8] := Graphics[{
 Switch[p
,0
 , {Line[{{a,b+s*0.05},{a+s*0.1,b},{a,b-s*0.05}}]
 ,Text[FontForm[t,{"Times",f}],{a+s*0.05,b+s*0.1},{0,-1}]}
,1
 , {Line[{{a-s*0.05,b},{a,b+s*0.1},{a+s*0.05,b}}]
 ,Text[FontForm[t,{"Times",f}],{a+s*0.1,b+s*0.05},{-1,0}]}
,2
 , {Line[{{a,b+s*0.05},{a-s*0.1,b},{a,b-s*0.05}}]
 ,Text[FontForm[t,{"Times",f}],{a-s*0.05,b+s*0.1},{0,-1}]}
,3
 , {Line[{{a-s*0.05,b},{a,b-s*0.1},{a+s*0.05,b}}] 
 ,Text[FontForm[t,{"Times",f}],{a+s*0.1,b-s*0.05},{-1,0}]}
,4
 , {Line[{{a,b+s*0.05},{a+s*0.1,b},{a,b-s*0.05}}]
 ,Text[FontForm[t,{"Times",f}],{a+s*0.05,b-s*0.1},{0,1}]}
,5
 , {Line[{{a-s*0.05,b},{a,b+s*0.1},{a+s*0.05,b}}]
 ,Text[FontForm[t,{"Times",f}],{a-s*0.1,b+s*0.05},{1,0}]}
,6
 , {Line[{{a,b+s*0.05},{a-s*0.1,b},{a,b-s*0.05}}]
 ,Text[FontForm[t,{"Times",f}],{a-s*0.05,b-s*0.1},{0,1}]}
,7
 , {Line[{{a-s*0.05,b},{a,b-s*0.1},{a+s*0.05,b}}] 
 ,Text[FontForm[t,{"Times",f}],{a-s*0.1,b-s*0.05},{1,0}]}
]}];

DrawTextF[a_,b_,t_,f_,p_:{0,0}] := Graphics[{Text[FontForm[t,{"Times",f}],{a,b},p]}];
roman[t_,s_:10] := FontForm[t,{"Times",s}]
italic[t_,s_:10] := FontForm[t,{"Times-Italic",s}]
bold[t_,s_:10] := FontForm[t,{"Times-Bold",s}]

DrawNode[a_,b_,t_:"",p_:0,s_:1,f_:8] := Graphics[{
 AbsolutePointSize[s*3],Point[{a,b}],
 Switch[p
 ,0
 ,Text[FontForm[t,{"Times",f}],{a+s*0.1,b},{-1,0}]
 ,1
 ,Text[FontForm[t,{"Times",f}],{a+s*0.1,b+s*0.1},{-1,-1}]
 ,2
 ,Text[FontForm[t,{"Times",f}],{a,b+s*0.1},{0,-1}]
 ,3
 ,Text[FontForm[t,{"Times",f}],{a-s*0.1,b+s*0.1},{1,-1}]
 ,4
 ,Text[FontForm[t,{"Times",f}],{a-s*0.1,b},{1,0}]
 ,5
 ,Text[FontForm[t,{"Times",f}],{a-s*0.1,b-s*0.1},{1,1}]
 ,6
 ,Text[FontForm[t,{"Times",f}],{a,b-s*0.1},{0,1}]
 ,7
 ,Text[FontForm[t,{"Times",f}],{a+s*0.1,b-s*0.1},{-1,1}] ]}];

DrawZ[c_,d_,f_,t_:"",p_:0,s_:1,F_:8] := 
Module[{a,b,g,h},
a=(f+c)/2-0.4*s;b=d;
g=c;h=(f+d)/2-0.4*s;
Graphics[Switch[p
,0
,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.15},{0.7,0.15},{0.7,-0.15},
   {0.1,-0.15},{0.1,0.15},{0.7,0.15},{0.7,0},{(f-a)/s,0} }]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b+s*0.2},{0,-1}] }
,1
,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.15,0.1},{0.15,0.7},{-0.15,0.7},
   {-0.15,0.1},{0.15,0.1},{0.15,0.7},{0,0.7},{0,(f-h)/s}  }]
  ,Text[FontForm[t,{"Times",F}],{g-s*0.2,h+s*0.4},{1,0}] }
,2
,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.15},{0.7,0.15},{0.7,-0.15},
   {0.1,-0.15},{0.1,0.15},{0.7,0.15},{0.7,0},{(f-a)/s,0} }]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b-s*0.2},{0,1}] }
,3
,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.15,0.1},{0.15,0.7},{-0.15,0.7},
   {-0.15,0.1},{0.15,0.1},{0.15,0.7},{0,0.7},{0,(f-h)/s}  }]
  ,Text[FontForm[t,{"Times",F}],{g+s*0.2,h+s*0.4},{-1,0}] }]]];

DrawBlock[c_,d_,f_,t_:"",p_:0,s_:1,F_:8] := 
Module[{a,b,g,h},
a=(f+c)/2-0.4*s;b=d;
g=c;h=(f+d)/2-0.4*s;
Graphics[Switch[p
,0
,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.3},{0.7,0.3},{0.7,-0.3},
   {0.1,-0.3},{0.1,0.3},{0.7,0.3},{0.7,0},{(f-a)/s,0} }]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b+s*0.0},{0,0}] }
,1
,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.3,0.1},{0.3,0.7},{-0.3,0.7},
   {-0.3,0.1},{0.3,0.1},{0.3,0.7},{0,0.7},{0,(f-h)/s}  }]
  ,Text[FontForm[t,{"Times",F}],{g-s*0.0,h+s*0.4},{0,0}] }
,2
,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.3},{0.7,0.3},{0.7,-0.3},
   {0.1,-0.3},{0.1,0.3},{0.7,0.3},{0.7,0},{(f-a)/s,0} }]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b-s*0.0},{0,0}] }
,3
,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.3,0.1},{0.3,0.7},{-0.3,0.7},
   {-0.3,0.1},{0.3,0.1},{0.3,0.7},{0,0.7},{0,(f-h)/s}  }]
  ,Text[FontForm[t,{"Times",F}],{g+s*0.0,h+s*0.4},{0,0}] }]]];

DrawLHV[a_,b_,c_,d_,p_:0] := Graphics[Switch[p
,0
,Line[{{a,b},{c,b},{c,d}}]
,1
,Line[{{a,b},{a,d},{c,d}}]
,2
,Line[{{a,b},{c,b},{c,d}}]
,3
,Line[{{a,b},{a,d},{c,d}}]]];

DrawLVH[a_,b_,c_,d_,p_:0] := Graphics[Switch[p
,0
,Line[{{a,b},{a,d},{c,d}}]
,1
,Line[{{a,b},{c,b},{c,d}}]
,2
,Line[{{a,b},{a,d},{c,d}}]
,3
,Line[{{a,b},{c,b},{c,d}}]]];

DrawGround[a_,b_,p_:0,s_:1] := Graphics[Switch[p
,0
,{Line[({a,b}+s*#)& /@ {{0,0},{0,-0.3}}]
 ,Line[({a,b}+s*#)& /@ {{-0.15,-0.30},{0.15,-0.30}}]
 ,Line[({a,b}+s*#)& /@ {{-0.10,-0.35},{0.10,-0.35}}]
 ,Line[({a,b}+s*#)& /@ {{-0.05,-0.40},{0.05,-0.40}}] }
,1
,{Line[({a,b}+s*#)& /@ {{0,0},{0,-0.3}}]
 ,Line[({a,b}+s*#)& /@ {{-0.1,-0.30},{0.1,-0.30}}] }
,2
,{Line[({a,b}+s*#)& /@ {{0,0},{0,0.3}}]
 ,Line[({a,b}+s*#)& /@ {{-0.15,0.30},{0.15,0.30}}]
 ,Line[({a,b}+s*#)& /@ {{-0.10,0.35},{0.10,0.35}}]
 ,Line[({a,b}+s*#)& /@ {{-0.05,0.40},{0.05,0.40}}] }
,3
,{Line[({a,b}+s*#)& /@ {{0,0},{0,0.3}}]
 ,Line[({a,b}+s*#)& /@ {{-0.1,0.30},{0.1,0.30}}] }]];

DrawDel[c_,d_,f_,t_:"",n_:"-1",p_:0,s_:1,F_:8] := 
Module[{a,b,g,h},
a=(f+c)/2-0.4*s;b=d;
g=c;h=(f+d)/2-0.4*s;
Graphics[Switch[p
,0
 ,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.3},{0.7,0.3},{0.7,-0.3},
   {0.1,-0.3},{0.1,0.3},{0.7,0.3},{0.7,0},{(f-a)/s,0} }]
 ,Line[({a,b}+s*#)& /@ {{-0.05,0.05},{0.05,0},{-0.05,-0.05}}]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b+s*0.4},{0,-1}]
  ,Text[FontForm["z",{"Times-Italic",F}],{a+s*0.4,b},{1,0}]
  ,Text[FontForm[n,{"Times",F-1}],{a+s*0.4,b},{-1,-1}] }
,1
 ,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.3,0.1},{0.3,0.7},{-0.3,0.7},
   {-0.3,0.1},{0.3,0.1},{0.3,0.7},{0,0.7},{0,(f-h)/s}  }]
 ,Line[({g,h}+s*#)& /@ {{0.05,-0.05},{0,0.05},{-0.05,-0.05}}]
  ,Text[FontForm[t,{"Times",F}],{g-s*0.4,h+s*0.4},{1,0}]
  ,Text[FontForm["z",{"Times-Italic",F}],{g,h+s*0.4},{1,0}]
  ,Text[FontForm[n,{"Times",F-1}],{g,h+s*0.4},{-1,-1}] }
,2
 ,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.3},{0.7,0.3},{0.7,-0.3},
   {0.1,-0.3},{0.1,0.3},{0.7,0.3},{0.7,0},{(f-a)/s,0} }]
 ,Line[({a,b}+s*#)& /@ {{0.85,0.05},{0.75,0},{0.85,-0.05}}]
  ,Text[FontForm[t,{"Times",F}],{a+s*0.4,b-s*0.4},{0,1}]
  ,Text[FontForm["z",{"Times-Italic",F}],{a+s*0.4,b},{1,0}]
  ,Text[FontForm[n,{"Times",F-1}],{a+s*0.4,b},{-1,-1}] }
,3
 ,{Line[({g,h}+s*#)& /@ {
   {0,(d-h)/s},{0,0.1},{0.3,0.1},{0.3,0.7},{-0.3,0.7},
   {-0.3,0.1},{0.3,0.1},{0.3,0.7},{0,0.7},{0,(f-h)/s}  }]
 ,Line[({g,h}+s*#)& /@ {{0.05,0.85},{0,0.75},{-0.05,0.85}}]
  ,Text[FontForm[t,{"Times",F}],{g+s*0.4,h+s*0.4},{-1,0}] 
  ,Text[FontForm["z",{"Times-Italic",F}],{g,h+s*0.4},{1,0}]
  ,Text[FontForm[n,{"Times",F-1}],{g,h+s*0.4},{-1,-1}]  }
,4
 ,{Line[({a,b}+s*#)& /@ {
   {(c-a)/s,0},{0.1,0},{0.1,0.3},{0.7,0.3},{0.7,-0.3},
   {0.1,-0.3},{0.1,0.3},{0.7,0.3},{0.7,0},{(f-a)/s,0} }]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -