根据功率分配比计算阻抗的过程需要重复用到威尔金森(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时(切比雪夫加权)