陣列天線方向圖乘積定理的Python實現

簡述

我前面的一篇博客已經對方向圖乘積定理進行了C#的實現,https://blog.csdn.net/qq_23176133/article/details/85641248,這次用python實現,併爲接下來的陣列天線綜合做準備。

效果如下

對少數量,中等數量,大數量陣列進行了綜合,其中黃色線和紅色線是我用Python寫的方向圖乘積定理綜合得到的,藍色的是hfss綜合得到的,基本99%以上的重合,歸一化方向圖完全一致,最大增益在絕大部分陣列一致,有一小部分有5%左右的差異。

16單元組陣

在這裏插入圖片描述
與HFSS綜合完全一致

8單元組陣

在這裏插入圖片描述
與HFSS綜合完全一致

5單元組陣

在這裏插入圖片描述
與HFSS綜合基本一致

2單元組陣

在這裏插入圖片描述
與HFSS綜合基本一致

python實現

先讀取單元方向圖的數據,然後通過方向圖乘積定理綜合,寫入新的csv,並通過matplot繪製方向圖。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pandas as pd
import math
import cmath
import csv
import matplotlib.pyplot as plt

class Pattern:
    def radiation(self):
        data_x = []
        data_y = []
        csv_data = pd.read_csv("./data.csv")
        n_data = len(csv_data)

        for i in range(0, n_data):
            data_x.append(csv_data.loc[i][0])
            data_y.append(csv_data.loc[i][1])

        n_cell = 9
        f = 1.575
        position = [0, 94, 206, 281, 393, 475, 587, 683, 785]
        power = [0.2, 0.8, 0.4, 0.3, 0.5, 0.9, 0.2, 0.7, 0.4]
        phase = [0, 82, 165, 201, 247, 229, 262, 305, 334]

        k = 2 * math.pi * f / 300
        csvfile = open("newdata.csv", "w+", newline='')
        writer = csv.writer(csvfile)
        data_array = []
        data_array.append(['Theta [deg]','Power'])
        data_new = []

        for i in range(0, n_data):
            data_array.append([])
            data_array[i+1].append(data_x[i])
            a = complex(0, 0)
            k_d = k * math.sin(data_x[i] * math.pi / 180)
            for j in range(0, n_cell):
                a = a + power[j] * data_y[i] * cmath.exp(complex(0,(phase[j] * math.pi / 180 + k_d * position[j])))
            data_array[i+1].append(10*math.log10(abs(a)))
            data_new.append(data_array[i+1][1])

        writer.writerows(data_array)

        plt.plot(data_x, data_new,"y")
        plt.show()


def main(argv=None):
    pattern = Pattern()
    pattern.radiation()

if __name__ == '__main__':
    main( )

運行結果

運行結果:增益和副瓣波形包絡完全一致,只是副瓣的波峯略有差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章