C/C++教程

C语言辅助设计威尔金森功率分配器

本文主要是介绍C语言辅助设计威尔金森功率分配器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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时(切比雪夫加权)

在这里插入图片描述

这篇关于C语言辅助设计威尔金森功率分配器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!