Python 基于pyqt5的雷达方程

Python 基于pyqt5的雷达方程

一、利用Qt Designer设计出GUI框架

在这里插入图片描述

左边为各类参数的控制拦,右边为数据显示框,因为只想控制功率(pt)和目标截面积(sigma)进行控制,所以这两个控件设置为可调节,其余控件设为不可调节。

二、将生成的ui文件转成py文件,以方便后续调用

下面展示一些 内联代码片

 #-*- coding: utf-8 -*-

#Form implementation generated from reading ui file 'formulation.ui'
#Created by: PyQt5 UI code generator 5.13.0
#WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(800, 556)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Form.sizePolicy().hasHeightForWidth())
        Form.setSizePolicy(sizePolicy)
        Form.setMinimumSize(QtCore.QSize(800, 550))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/startImage/purple.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        Form.setStyleSheet("QWidget#Form{\n"
"    border-image: url(:/formulation_img/formulation_img.jpg);\n"
"}")
        self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
        self.horizontalLayout.setContentsMargins(4, 0, 0, 0)
        self.horizontalLayout.setSpacing(0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.widget = QtWidgets.QWidget(Form)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth())
        self.widget.setSizePolicy(sizePolicy)
        self.widget.setStyleSheet("")
        self.widget.setObjectName("widget")
        self.gridLayout = QtWidgets.QGridLayout(self.widget)
        self.gridLayout.setContentsMargins(20, 20, 10, 20)
        self.gridLayout.setSpacing(15)
        self.gridLayout.setObjectName("gridLayout")
        self.te_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.te_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.te_dsb.sizePolicy().hasHeightForWidth())
        self.te_dsb.setSizePolicy(sizePolicy)
        self.te_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.te_dsb.setDecimals(0)
        self.te_dsb.setMaximum(1500.0)
        self.te_dsb.setProperty("value", 290.0)
        self.te_dsb.setObjectName("te_dsb")
        self.gridLayout.addWidget(self.te_dsb, 4, 1, 1, 1)
        self.pt_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.pt_dsb.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pt_dsb.sizePolicy().hasHeightForWidth())
        self.pt_dsb.setSizePolicy(sizePolicy)
        self.pt_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.pt_dsb.setDecimals(1)
        self.pt_dsb.setMinimum(0.1)
        self.pt_dsb.setProperty("value", 1.5)
        self.pt_dsb.setObjectName("pt_dsb")
        self.gridLayout.addWidget(self.pt_dsb, 0, 1, 1, 1)
        self.label_6 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
        self.label_6.setSizePolicy(sizePolicy)
        self.label_6.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_6.setFont(font)
        self.label_6.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy)
        self.label_3.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_3.setAlignment(QtCore.Qt.AlignCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
        self.label_4 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy)
        self.label_4.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_4.setFont(font)
        self.label_4.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)
        self.label_4.setObjectName("label_4")
        self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
        self.range_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.range_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.range_dsb.sizePolicy().hasHeightForWidth())
        self.range_dsb.setSizePolicy(sizePolicy)
        self.range_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.range_dsb.setDecimals(0)
        self.range_dsb.setSingleStep(0.1)
        self.range_dsb.setProperty("value", 25.0)
        self.range_dsb.setObjectName("range_dsb")
        self.gridLayout.addWidget(self.range_dsb, 8, 1, 1, 1)
        self.label_7 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
        self.label_7.setSizePolicy(sizePolicy)
        self.label_7.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_7.setFont(font)
        self.label_7.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.gridLayout.addWidget(self.label_7, 6, 0, 1, 1)
        self.label_5 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
        self.label_5.setSizePolicy(sizePolicy)
        self.label_5.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_5.setAlignment(QtCore.Qt.AlignCenter)
        self.label_5.setObjectName("label_5")
        self.gridLayout.addWidget(self.label_5, 4, 0, 1, 1)
        self.label = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setMinimumSize(QtCore.QSize(20, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.g_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.g_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.g_dsb.sizePolicy().hasHeightForWidth())
        self.g_dsb.setSizePolicy(sizePolicy)
        self.g_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.g_dsb.setDecimals(0)
        self.g_dsb.setMinimum(-50.0)
        self.g_dsb.setMaximum(50.0)
        self.g_dsb.setSingleStep(5.0)
        self.g_dsb.setStepType(QtWidgets.QAbstractSpinBox.DefaultStepType)
        self.g_dsb.setProperty("value", 45.0)
        self.g_dsb.setObjectName("g_dsb")
        self.gridLayout.addWidget(self.g_dsb, 2, 1, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
        self.label_2.setSizePolicy(sizePolicy)
        self.label_2.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
        self.freq_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.freq_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.freq_dsb.sizePolicy().hasHeightForWidth())
        self.freq_dsb.setSizePolicy(sizePolicy)
        self.freq_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.freq_dsb.setPrefix("")
        self.freq_dsb.setDecimals(1)
        self.freq_dsb.setProperty("value", 5.6)
        self.freq_dsb.setObjectName("freq_dsb")
        self.gridLayout.addWidget(self.freq_dsb, 1, 1, 1, 1)
        self.loss_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.loss_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.loss_dsb.sizePolicy().hasHeightForWidth())
        self.loss_dsb.setSizePolicy(sizePolicy)
        self.loss_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.loss_dsb.setDecimals(0)
        self.loss_dsb.setSingleStep(0.1)
        self.loss_dsb.setProperty("value", 6.0)
        self.loss_dsb.setObjectName("loss_dsb")
        self.gridLayout.addWidget(self.loss_dsb, 7, 1, 1, 1)
        self.b_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.b_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.b_dsb.sizePolicy().hasHeightForWidth())
        self.b_dsb.setSizePolicy(sizePolicy)
        self.b_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.b_dsb.setDecimals(0)
        self.b_dsb.setMaximum(50.0)
        self.b_dsb.setProperty("value", 5.0)
        self.b_dsb.setObjectName("b_dsb")
        self.gridLayout.addWidget(self.b_dsb, 5, 1, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
        self.label_9.setSizePolicy(sizePolicy)
        self.label_9.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_9.setFont(font)
        self.label_9.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_9.setAlignment(QtCore.Qt.AlignCenter)
        self.label_9.setObjectName("label_9")
        self.gridLayout.addWidget(self.label_9, 8, 0, 1, 1)
        self.sigma_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.sigma_dsb.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.sigma_dsb.sizePolicy().hasHeightForWidth())
        self.sigma_dsb.setSizePolicy(sizePolicy)
        self.sigma_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.sigma_dsb.setDecimals(0)
        self.sigma_dsb.setMinimum(-30.0)
        self.sigma_dsb.setMaximum(30.0)
        self.sigma_dsb.setSingleStep(5.0)
        self.sigma_dsb.setProperty("value", -10.0)
        self.sigma_dsb.setObjectName("sigma_dsb")
        self.gridLayout.addWidget(self.sigma_dsb, 3, 1, 1, 1)
        self.label_8 = QtWidgets.QLabel(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth())
        self.label_8.setSizePolicy(sizePolicy)
        self.label_8.setMinimumSize(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.label_8.setFont(font)
        self.label_8.setStyleSheet("QLabel{\n"
"background-color: rgb(255, 255, 255);\n"
"border: 1px solid rgb(0, 0, 0);\n"
"}")
        self.label_8.setAlignment(QtCore.Qt.AlignCenter)
        self.label_8.setObjectName("label_8")
        self.gridLayout.addWidget(self.label_8, 7, 0, 1, 1)
        self.nf_dsb = QtWidgets.QDoubleSpinBox(self.widget)
        self.nf_dsb.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.nf_dsb.sizePolicy().hasHeightForWidth())
        self.nf_dsb.setSizePolicy(sizePolicy)
        self.nf_dsb.setMinimumSize(QtCore.QSize(100, 25))
        self.nf_dsb.setDecimals(0)
        self.nf_dsb.setMaximum(50.0)
        self.nf_dsb.setProperty("value", 3.0)
        self.nf_dsb.setObjectName("nf_dsb")
        self.gridLayout.addWidget(self.nf_dsb, 6, 1, 1, 1)
        self.gridLayout.setColumnStretch(0, 5)
        self.horizontalLayout.addWidget(self.widget)
        self.widget_2 = QtWidgets.QWidget(Form)
        self.widget_2.setStyleSheet("")
        self.widget_2.setObjectName("widget_2")
        self.horizontalLayout.addWidget(self.widget_2)
        self.horizontalLayout.setStretch(1, 7)

        self.retranslateUi(Form)
        self.sigma_dsb.valueChanged['double'].connect(Form.update_line)
        self.pt_dsb.valueChanged['double'].connect(Form.update_line)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "雷达方程"))
        self.te_dsb.setSuffix(_translate("Form", " K"))
        self.pt_dsb.setSuffix(_translate("Form", " MW"))
        self.label_6.setText(_translate("Form", "b"))
        self.label_3.setText(_translate("Form", "g"))
        self.label_4.setText(_translate("Form", "sigma"))
        self.range_dsb.setSuffix(_translate("Form", "-165 Km"))
        self.label_7.setText(_translate("Form", "nf"))
        self.label_5.setText(_translate("Form", "te"))
        self.label.setText(_translate("Form", "pt"))
        self.g_dsb.setSuffix(_translate("Form", " dB"))
        self.label_2.setText(_translate("Form", "freq"))
        self.freq_dsb.setSuffix(_translate("Form", " GHz"))
        self.loss_dsb.setSuffix(_translate("Form", " dB"))
        self.b_dsb.setSuffix(_translate("Form", " MHz"))
        self.label_9.setText(_translate("Form", "range"))
        self.sigma_dsb.setSuffix(_translate("Form", " dB"))
        self.label_8.setText(_translate("Form", "loss"))
        self.nf_dsb.setSuffix(_translate("Form", " dB"))
import resources.resource_rc


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

三、重新创建一个py文件,调用之前的文件,并设置相关的控制信号

from PyQt5.Qt import *
from submenu.formulation import Ui_Form
import numpy as np
import matplotlib
matplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib as plt

class RadarEqu:
    def __init__(self, pt, freq, g, sigma, te, b, nf, loss):
        c = 3e8
        self.lamd = 10*np.log10(c / (freq * 1e9))
        self.pt = 10*np.log10(pt*1e6)
        self.freq = 10*np.log10(freq*1e9)
        self.g = g
        self.sigma = sigma
        self.te = 10*np.log10(te)
        self.b = 10*np.log10(b*1e6)
        self.nf = nf
        self.loss = loss
        self.r = np.linspace(25e3, 165e3, 1000)

    def calculate_snr(self):
        r_db= 10 * np.log10(self.r**4)
        num = self.pt + 2 * self.g + 2 * self.lamd + self.sigma
        den = 3*10*np.log10(4*np.pi) + 10*np.log10(1.38e-23) + self.te + self.b + self.nf + self.loss + r_db
        snr = num - den
        return snr


class MyFigure(FigureCanvas):
    def __init__(self, value_dict={}):
        plt.rcParams['font.sans-serif'] = ["SimHei"]
        plt.rcParams['axes.unicode_minus'] = False
        self.fig = Figure()
        super().__init__(self.fig)
        self.calculate_dict = value_dict

        self.pt = self.calculate_dict['pt']
        self.freq = self.calculate_dict['freq']
        self.g = self.calculate_dict['g']
        self.sigma = self.calculate_dict['sigma']
        self.te = self.calculate_dict['te']
        self.b = self.calculate_dict['b']
        self.nf = self.calculate_dict['nf']
        self.loss = self.calculate_dict['loss']

        axes1 = self.fig.add_subplot(111)
        axes1.grid(True)
        axes1.set_title('功率孔径积-检测距离')
        axes1.set_ylabel("功率孔径积 /dB")
        axes1.set_xlabel("检测距离 /Km")
        axes1.set_xlim(left=20, right=180)
        axes1.set_ylim(bottom=-10, top=50)
        self.axes1 = axes1

    def plot_sigma_km(self):
        radar_eq = RadarEqu(self.pt, self.freq, self.g, self.sigma, self.te, self.b, self.nf, self.loss)
        snr = radar_eq.calculate_snr()
        r_km = radar_eq.r/1000
        self.axes1.plot(r_km, snr)

class FormulationPane(QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setAttribute(Qt.WA_StyledBackground, True)
        self.setupUi(self)

        pt = self.pt_dsb.value()
        freq = self.freq_dsb.value()
        g = self.g_dsb.value()
        sigma = self.sigma_dsb.value()
        te = self.te_dsb.value()
        b = self.b_dsb.value()
        nf = self.nf_dsb.value()
        loss = self.loss_dsb.value()
        current_dict = {'pt': pt, 'freq': freq, "g": g, "sigma": sigma, "te": te, "b": b, "nf": nf, "loss": loss}
        self.current_dict = current_dict
        self.F = MyFigure(value_dict=self.current_dict)
        self.layout = QGridLayout(self.widget_2)
        self.layout.addWidget(self.F)
        self.F.plot_sigma_km()

    def update_line(self):
        if self.sigma_dsb.value() != self.current_dict["sigma"]:
            sigma = self.sigma_dsb.value()
            self.current_dict["sigma"] = sigma

        if self.pt_dsb.value() != self.current_dict['pt']:
            pt = self.pt_dsb.value()
            self.current_dict['pt'] = pt

        self.layout.removeWidget(self.F)
        self.F = MyFigure(value_dict=self.current_dict)
        self.layout.addWidget(self.F)
        self.F.plot_sigma_km()

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)

    window = FormulationPane()
    window.show()

    sys.exit(app.exec_())

调用程序,启动的效果如下图:

在这里插入图片描述

扫描下方二维码,关注“海海读书”公众号,回复“雷达方程”,即可获得程序原代码
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值