我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 谁有角锥喇叭天线方向图的程序? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

xiaoqingquan



性别: 帅哥 状态: 该用户目前不在线
等级: 赏金猎人
发贴: 612
威望: 0
浮云: 223
在线等级:
注册时间: 2007-09-17
最后登陆: 2008-06-24

5come5帮你背单词 [ sitting-room /'sitiŋrum/ n. 起居室 ]


谁有角锥喇叭天线方向图的程序?

谁有角锥喇叭天线方向图的程序?
顶端 Posted: 2008-04-20 10:23 | [楼 主]
xiaoqingquan



性别: 帅哥 状态: 该用户目前不在线
等级: 赏金猎人
发贴: 612
威望: 0
浮云: 223
在线等级:
注册时间: 2007-09-17
最后登陆: 2008-06-24

5come5帮你背单词 [ speech /spi:t/ n. 言语,讲话,演讲 ]


类似的天线方向图设计程序都可以
顶端 Posted: 2008-04-20 10:32 | [1 楼]
xiaoqingquan



性别: 帅哥 状态: 该用户目前不在线
等级: 赏金猎人
发贴: 612
威望: 0
浮云: 223
在线等级:
注册时间: 2007-09-17
最后登陆: 2008-06-24

5come5帮你背单词 [ pretend /pri'tend/ v. 假装,装扮,试用 ]


能帮忙解释下这个程序吗?TC上说找不到complex这个头文件:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <complex.h>

#define MAXIT 100        //允许最大迭代次数
#define FPMIN 1.0e-30    //最小可表示的浮点数的邻近数
#define XMIN 1.5        //使用级数和连分式之间的区分线

complex J=complex(0.0,1.0);
//---对所有实数x计算菲涅尔积分S(x)和C(x)--------
void Frenel(double x,double *s,double *c)
{ int k,n,odd;
  double a,ax,fact,pix2,sign,sum,sumc,sums,term,test;
  double EPS;
  complex b,cc,d,h,del,cs;
  EPS=6.0e-8;
  ax=fabs(x);
  if(ax<sqrt(FPMIN))
  { *s=0.;
    *c=ax;
  }
  else if(ax<=XMIN)
  { sum=sums=0.;
    sumc=ax;
    sign=1.;
    fact=0.5*M_PI*ax*ax;
    odd=1;
    term=ax;
    n=3;
    for(k=1;k<=MAXIT;k++)
    { term*=fact/k;
      sum+=sign*term/n;
      test=fabs(sum)*EPS;
      if(odd)
      { sign=-sign;
        sums=sum;
        sum=sumc;
      }
      else
      { sumc=sum;
        sum=sums;
      }
      if(term<test) break;
      odd=!odd;
      n+=2;
    }
    if(k>MAXIT)
    { puts("series failed in frenel!");
      return;
    }
    *s=sums;
    *c=sumc;
  }
  else            //由修正Lentz方法求连分式值
  { pix2=M_PI*ax*ax;
    b=1.-J*pix2;
    cc=1./FPMIN;
    d=h=1./b;
    n=-1;
    for(k=2;k<=MAXIT;k++)
    { n+=2;
      a=-n*(n+1.);
      b=4.+b;
      d=1./(b+a*d);
      cc=b+a/cc;
      del=cc*d;
      h=h*del;
      if(fabs(real(del)-1.)+fabs(imag(del))<EPS) break;
    }
    if(k>MAXIT)
    { puts("cf failed in frenel!");
      return;
    }
    h=h*(ax-J*ax);
    cs=(0.5+J*0.5)*(1.-h*exp(J*0.5*pix2));
    *c=real(cs);
    *s=imag(cs);
  }
  if(x<0.)
  { *c=-(*c);
    *s=-(*s);
  }
}


complex F(double CT,double FI,double Fix)
{ double a1,b1,ph,pe;
  double t1,t11,t12,t2,t21,t22;
  double Ct1,Ct2,Ct11,Ct12,Ct21,Ct22;
  double St1,St2,St11,St12,St21,St22;
  double f,Lmd,k;
  //double sct_sfi,sct_cfi,cct;
  //sct_sfi=sin(CT)*sin(FI)*cos(Fix)+cos(CT)*sin(Fix);
  //sct_cfi=sin(CT)*cos(FI);
  //cct=cos(CT)*cos(Fix)-sin(CT)*sin(FI)*sin(Fix);

  complex I,F;
  complex I1,I2,I1x,I2x;
  f=94e+9;
  Lmd=3.e+8/f;
  k=2.*M_PI/Lmd;
  a1=0.007;
  b1=0.00553;
  pe=0.5*b1/tan(M_PI*15.0/180.0);
  ph=0.5*a1/tan(M_PI*15.0/180.0);
  double kx1,kx2,ky;
        ky=k*sin(CT)*sin(FI);
        t1=(-0.5*k*b1-ky*pe)/sqrt(M_PI*k*pe);
        Frenel(t1,&St1,&Ct1);
        t2=(0.5*k*b1-ky*pe)/sqrt(M_PI*k*pe);
        Frenel(t2,&St2,&Ct2);
        I1=sqrt(M_PI*pe/k)*exp(0.5*J*ky*ky*pe/k)*(Ct2-Ct1-J*(St2-St1));

        kx1=k*sin(CT)*cos(FI)+M_PI/a1;
        t11=(-0.5*k*a1-ph*kx1)/sqrt(M_PI*k*ph);
        Frenel(t11,&St11,&Ct11);
        t21=(0.5*k*a1-ph*kx1)/sqrt(M_PI*k*ph);
        Frenel(t21,&St21,&Ct21);
        I1x=0.5*sqrt(M_PI*ph/k)*exp(0.5*J*kx1*kx1*ph/k)*(Ct21-Ct11-J*(St21-St11));
        kx2=k*sin(CT)*cos(FI)-M_PI/a1;
        t12=(-0.5*k*a1-kx2*ph)/sqrt(M_PI*k*ph);
        Frenel(t12,&St12,&Ct12);
        t22=(0.5*k*a1-kx2*ph)/sqrt(M_PI*k*ph);
        Frenel(t22,&St22,&Ct22);
        I2x=0.5*sqrt(M_PI*ph/k)*exp(0.5*J*kx2*kx2*ph/k)*(Ct22-Ct12-J*(St22-St12));
        I2=I1x+I2x;
        I=I1*I2;
        F=(1+cos(CT))*I;
        return F;
}

void main(void)
{
  double femax,fhmax,EdB,HdB;
  double CT,FI,Fix;
  int i;
  complex FE[181],FH[181];
  FILE *fp1,*fp2;
  Fix=-0*M_PI/180.0;
  femax=0;
  fhmax=0;
  for(i=0;i<181;i++)
  {CT=(-90+i)*M_PI/180;
  FI=0.5*M_PI;
  FE=F(CT,FI,Fix);
  if(abs(FE)>femax)
  femax=abs(FE);
  }
fp1=fopen("FE0.dat","w");
  for(i=0;i<181;i++)
  { CT=i-90;
    EdB=20*log10(abs(FE)/femax);
    fprintf(fp1,"%6.1f %12.4f\n",CT,EdB);
  }
fclose(fp1);
for(i=0;i<181;i++)
  {CT=(-90+i)*M_PI/180;
  FI=0;

  FH=F(CT,FI,Fix);
  if(abs(FH)>fhmax)
  fhmax=abs(FH);
  }
fp2=fopen("FH0.dat","w");
  for(i=0;i<181;i++)
  { CT=i-90;
    HdB=20*log10(abs(FH)/fhmax);
    fprintf(fp2,"%6.1f %12.4f\n",CT,HdB);
  }
fclose(fp2);
getch();
}
顶端 Posted: 2008-04-20 10:37 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.008315(s) query 5, Time now is:11-24 20:17, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号