C语言辅助设计威尔金森功率分配器
多路功分器馈电网络的设计,经常采用两路功分器级联的方式。基本的威尔金森(Wiljinson)功分器结构如下所示:
根据功率分配比计算阻抗的过程需要重复用到威尔金森(Wiljinson)功率分配器的设计步骤和计算过程,计算过程繁杂且容易出错,借助C语言来简化这个过程。
代码中以特性阻抗 Z0=50Ω,两路功分器作为计算。
#include<stdio.h>
#include<float.h>
#include<math.h>
#define Z0 50//输入阻抗
typedef struct design {
float a[8];//阵列
struct data {//介质板参数
float Er;
float Mur;
float H;
float Hu;
float T;
float TanD;
};
}antenna;
int main(void) {
antenna Yagi;
Yagi.Er = 2.2;
Yagi.Mur = 1;
Yagi.H = 0.254;
float num1, num2,k2,k3,result1,z02,z03,R;
loop:printf("输入功率分配比:\n");
printf("p1值:");
scanf_s("%f", &num1);
printf("p2值:");
scanf_s("%f", &num2);
printf("验算过程:\n");
printf("--------------\n");
printf("功率分配比: %.2f:%.2f\n", num1, num2);
k2 = num2 / num1;
printf("k方值为:%f\n", k2);
result1 = 1 + k2;
printf("比值分子为:%f\n", result1);
k3 = (float)pow(k2, 1.5);
printf("比值分母为:%f\n", k3);
printf("根号下值为:%f\n", result1/k3);
z03= (float)(pow(result1 / k3,0.5)) * Z0;
z02= (float)(pow(pow(k2, 0.5) * result1, 0.5)) * Z0;
R = result1 / pow(k2, 0.5) * Z0;
printf("--------------\n");
printf("计算得的阻抗值为\n");
printf("Z03=%.2fΩ Z02=%.2fΩ\n", z03, z02);
printf("隔离电阻:");
printf("R=%.2fΩ\n", R);
printf("**************************************\n");
goto loop;
return 0;
}
代码中的结构体部分是其他函数调用时使用的,计算阻抗暂时用不到。
验证:功率分配比为1:1时
功率分配比为0.66036:0.58008时(切比雪夫加权)