diff options
Diffstat (limited to 'Build/source/utils/asymptote/examples/alignedaxis.asy')
-rw-r--r-- | Build/source/utils/asymptote/examples/alignedaxis.asy | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/examples/alignedaxis.asy b/Build/source/utils/asymptote/examples/alignedaxis.asy new file mode 100644 index 00000000000..542dcb9bc60 --- /dev/null +++ b/Build/source/utils/asymptote/examples/alignedaxis.asy @@ -0,0 +1,107 @@ +import graph; + +real Freq=60.0; +real margin=5mm; + +pair exp(pair x) { + return exp(x.x)*(cos(x.y)+I*sin(x.y)); +} + +real Merr(real x, real w) { + real tau=x/(2*Freq); + return 20*log(abs((tau*w+tau/(exp(I*2*pi*Freq*tau)-1))*(I*2*pi*Freq))); +} + +real Aerr(real x, real w) { + real tau=x/(2*Freq); + return degrees((tau*w+tau/(exp(I*2*pi*Freq*tau)-1))*(I*2*pi*Freq)); +} + +picture pic1; +scale(pic1,Log,Linear); +real Merr1(real x){return Merr(x,1);} +draw(pic1,graph(pic1,Merr1,1e-4,1),black+1.2); + +ylimits(pic1,-60,20); +yaxis(pic1,"magnitude (dB)",LeftRight,RightTicks(new + real[] {-60,-40,-20,0,20})); +xaxis(pic1,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5)); +yequals(pic1,0,Dotted); +yequals(pic1,-20,Dotted); +yequals(pic1,-40,Dotted); +xequals(pic1,1e-3,Dotted); +xequals(pic1,1e-2,Dotted); +xequals(pic1,1e-1,Dotted); + +size(pic1,100,100,point(pic1,SW),point(pic1,NE)); + +label(pic1,"$\theta=1$",point(pic1,N),2N); + +frame f1=pic1.fit(); +add(f1); + +picture pic1p; +scale(pic1p,Log,Linear); +real Aerr1(real x){return Aerr(x,1);} +draw(pic1p,graph(pic1p,Aerr1,1e-4,1),black+1.2); + +ylimits(pic1p,-5,95); +yaxis(pic1p,"phase (deg)",LeftRight,RightTicks(new real[] {0,45,90})); +xaxis(pic1p,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5)); +yequals(pic1p,0,Dotted); +yequals(pic1p,45,Dotted); +yequals(pic1p,90,Dotted); +xequals(pic1p,1e-3,Dotted); +xequals(pic1p,1e-2,Dotted); +xequals(pic1p,1e-1,Dotted); + +size(pic1p,100,100,point(pic1p,SW),point(pic1p,NE)); + +frame f1p=pic1p.fit(); +f1p=shift(0,min(f1).y-max(f1p).y-margin)*f1p; +add(f1p); + +picture pic2; +scale(pic2,Log,Linear); +real Merr2(real x){return Merr(x,0.75);} +draw(pic2,graph(pic2,Merr2,1e-4,1),black+1.2); + +ylimits(pic2,-60,20); +yaxis(pic2,"magnitude (dB)",LeftRight,RightTicks(new + real[] {-60,-40,-20,0,20})); +xaxis(pic2,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5)); +yequals(pic2,0,Dotted); +yequals(pic2,-20,Dotted); +yequals(pic2,-40,Dotted); +xequals(pic2,1e-3,Dotted); +xequals(pic2,1e-2,Dotted); +xequals(pic2,1e-1,Dotted); + +size(pic2,100,100,point(pic2,SW),point(pic2,NE)); + +label(pic2,"$\theta=0.75$",point(pic2,N),2N); + +frame f2=pic2.fit(); +f2=shift(max(f1).x-min(f2).x+margin)*f2; +add(f2); + +picture pic2p; +scale(pic2p,Log,Linear); +real Aerr2(real x){return Aerr(x,0.75);} +draw(pic2p,graph(pic2p,Aerr2,1e-4,1),black+1.2); + +ylimits(pic2p,-5,95); +yaxis(pic2p,"phase (deg)",LeftRight,RightTicks(new real[] {0,45.1,90})); +xaxis(pic2p,"$f/f_\mathrm{Ny}$",BottomTop,LeftTicks(N=5)); +yequals(pic2p,0,Dotted); +yequals(pic2p,45,Dotted); +yequals(pic2p,90,Dotted); +xequals(pic2p,1e-3,Dotted); +xequals(pic2p,1e-2,Dotted); +xequals(pic2p,1e-1,Dotted); + +size(pic2p,100,100,point(pic2p,SW),point(pic2p,NE)); + +frame f2p=pic2p.fit(); +f2p=shift(max(f1p).x-min(f2p).x+margin,min(f2).y-max(f2p).y-margin)*f2p; +add(f2p); |