首页 > 解决方案 > 如何使用 Python 计算 FWHM?

问题描述

我正在开发一个 python 系统,我需要计算图形 FWHM,其中用户说出 X 和 Y 轴的 txt 文件(我将轴保存在 2 个列表 xList 和 yList2 中)。我运行了两个图形,得到的结果是:30.918nm(正确值:34.786 nm)和 76.601nm(正确值:74.710nm)。我正在使用这个解决方案:使用 python 进行 FWHM 计算。我的代码是:

import numpy as np

def lin_interp(x, y, i, half):

    return x[i] + (x[i+1] - x[i]) * ((half - y[i]) / (y[i+1] - y[i]))


class FWHM:
    
    def __init__(self, xList, yList2):

        self.xList = xList

        self.yList2 = yList2

        #pega os valores máximo e mínimo do eixo Y e divide por 2
        y_min = (min(yList2))

        y_max = (max(yList2))
                
        med_y = ((y_max-y_min)/2)


        #cálculo para descobrir os pontos (x1 e x2) que estão à meia altura
        signs = np.sign(np.add(yList2, -med_y))

        zero_crossings = (signs[0:-2] != signs[1:-1])
        zero_crossings_i = np.where(zero_crossings)[0]


        x1 = lin_interp(xList, yList2, zero_crossings_i[1], med_y)

        x2 = lin_interp(xList, yList2, zero_crossings_i[0], med_y)
     
        #printa os pontos do eixo X e o FWHM
        print(x1, x2, abs(x1-x2))

标签: pythonnumpy

解决方案


推荐阅读