模块一:基于矩阵运算fiting curve

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 21 14:13:07 2022

@author: xujunkang
"""

# -*- coding: utf-8 -*-
"""
Created on Fri Oct 21 13:50:54 2022

@author: xujunkang
"""

import matplotlib.pyplot as plt
import math
import numpy
import random

class LeastSqauresCF():
    def __init__(self):
        self.order = 1
        self.Xvalues = None
        self.Yvalues = None
        self.fig = plt.figure()
        self.subfig = self.fig.add_subplot(111)
    #========================================
    # Draw the input points/curve in a figure
    #========================================
    def ReadAnddrawInputPoints(self,Inputx=None,InputY=None, order=1):
        try:
            if Inputx is None or InputY is None:
                return False
            if(len(Inputx)!=len(InputY)):
                return False
            if order <=0:
                return False
            
            if type(order) !=int:
                self.order = int(order)
            else:
                self.order = order
            self.Xvalues = Inputx
            self.Yvalues = InputY
            
            self.subfig.plot(Inputx,InputY,color='r',linestyle='',marker='*')
            return True
        except Exception as e:
            print(e)
            return False
    #========================================
    # Calculate curve fitting factor matrix
    #========================================    
    def produceFittingCurveFactors(self):
        try:
            #(1) Generate matrix [X]
            matX=[]
            for i in range(0,len(self.Xvalues)):
                matx1=[]
                for j in range(0,self.order+1):
                    dx=1.0
                    for l in range(0,j):
                        dx = dx * self.Xvalues[i]
                    matx1.append(dx)
                matX.append(matx1)

#(2) Generate matrix [X]T.[X]
            matX_Trans = numpy.matrix(matX).T
            matX_FinalX = numpy.dot(numpy.matrix(matX_Trans),numpy.matrix(matX))

#(3) Generate matrix Y' =[X]T.[Y]
            matFinalY = numpy.dot(matX_Trans,numpy.matrix(self.Yvalues).T)

#(4) Solve the function:[A] = [[X]T.[X]]**(-1).[X]T.[Y]
            matAResult=numpy.linalg.solve(numpy.array(matX_FinalX),numpy.array(matFinalY))
            return matAResult
        except Exception as e:
            print(e)
            return None
    #========================================
    # Output fitting curve function
    #========================================        
    def outputFittingCurveFunction(self, inputMatFactors=None):
        if inputMatFactors is None:
            return False
        
        i = 0
        strFitting= ""
        for a in inputMatFactors:
            #print(a[0])
            if i==0:
                strFitting +=str(a[0])
            else:
                strFitting +=("+"if a[0]>0 else"") +str(a[0])+(("x**"+str(i)) if i>1 else "x")
            i+=1
        return strFitting
        
        print(strFitting)
            
        
    #========================================
    # draw the curve based on the result function
    #========================================
    
    def drawFittedCurve(self, xRangeMin=None,xRangeMax=None,matAResult=None,resolution=0.01):
        try:
            if matAResult is None:
                return False
            if xRangeMin is None or xRangeMax is None:
                xRangeMin = self.Xvalues[0]
                xRangeMax = self.Xvalues[-1]
            
            #print('xRangeMin: ',xRangeMin, 'xRangeMax: ',xRangeMax)
            
            xxa= numpy.arange(xRangeMin,xRangeMax,resolution)
            yya=[]
            for i in range(0,len(xxa)):
                yy=0.0
                for j in range(0,self.order+1):
                    dy=1.0
                    #x[i]**j
                    for k in range(0,j):
                        dy*=xxa[i]
                    #a[j]*(x[i]**j)
                    dy*=matAResult[j]
                    yy+=dy
                yya.append(yy)
            #print(xxa,yya)
            self.subfig.plot(xxa,yya,color='g',linestyle='-',marker='')

self.subfig.legend()
            plt.show() 
            return True
        except Exception as e:
            print(e)
            return False

if __name__=="__main__":
    LS = LeastSqauresCF()
    #============================
    #(1-1) Generate simulation data set
    #============================
    x = [1,2,3]
    y = [2,3,4]
    
    if LS.ReadAnddrawInputPoints(x,y,1):    #plot the orginal data curve, set order=9
        MatrixFactor = LS.produceFittingCurveFactors()
        a=LS.outputFittingCurveFunction(MatrixFactor)
        print(a)
        LS.drawFittedCurve(matAResult=MatrixFactor)

模块二:利用正则表达式读取二进制文档作图

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import re
import os
import matplotlib.pyplot as plt
import numpy as np 
import math
from scipy import optimize
from curveFT import LeastSqauresCF as LCF
import random

f=open("/home/xujunkang/python/1.text")
a=f.read()

str= "[-, ][0-9].[0-9]{14}[A-Z][-,+][0-9][0-9]"
data= re.findall(str,a)

L=list(map(float, data))
N=len(L)
N2=N/32
N3=int(N2)
num= 18+(N3*33)-50
print(num)
GateV=[]
for i in range(18,num,33):
    V=L[i]
    
    GateV.append(V)
    
num2= 7+(N3*33)-50
DrainI=[]
for i in range(7,num2,33):
    A=L[i]
    
    DrainI.append(A)

if __name__=="__main__":
    LS = LCF()
    #============================
    #(1-1) Generate simulation data set
    #============================
    x = GateV
    print(x)
    y = DrainI
    print(y)
    y1=np.log10(y)
    print(y1)
    
    if LS.ReadAnddrawInputPoints(x,y,8):    #plot the orginal data curve, set order=9
        MatrixFactor = LS.produceFittingCurveFactors()
        a=LS.outputFittingCurveFunction(MatrixFactor)
        print(a)
        def fun(x):
            result= -1.8379269947267623e-07+ 3.140534266406034e-05*x-0.000959143579403055*x**2+0.010720967466933243*x**3-0.055780642243223655*x**4+0.1481787577677457*x**5-0.20366287528100727*x**6+0.13898369178926293*x**7-0.03740690427393497*x**8
            return result
        result= fun(0.35)
        print(result)
        LS.drawFittedCurve(matAResult=MatrixFactor)

基于Scipy fiting Curve 输出函数相关推荐

  1. python二元函数图像在线绘制_Python实现的拟合二元一次函数功能示例【基于scipy模块】...

    Python实现的拟合二元一次函数功能示例[基于scipy模块] 发布时间:2020-08-31 00:46:24 来源:脚本之家 阅读:121 本文实例讲述了Python实现的拟合二元一次函数功能. ...

  2. 基于 scipy.optimize.minimize 方法对 MindQuantm 搭建的变参量子线路进行优化

    基于 scipy.optimize.minimize 方法对 MindQuantm 搭建的变参量子线路进行优化. 任务详情请参考 MindQuantum 官网 import numpy as np i ...

  3. python二元多次函数拟合_Python实现的拟合二元一次函数功能示例【基于scipy模块】...

    本文实例讲述了Python实现的拟合二元一次函数功能.分享给大家供大家参考,具体如下: 背景: 使用scipy拟合一元二次函数. 参考: HYRY Studio-<用Python做科学计算> ...

  4. python自定义二元一次函数_Python实现的拟合二元一次函数功能示例【基于scipy模块】...

    本文实例讲述了Python实现的拟合二元一次函数功能.分享给大家供大家参考,具体如下: 背景: 使用scipy拟合一元二次函数. 参考: HYRY Studio-<用Python做科学计算> ...

  5. 计算机视觉(三):基于Scipy图像处理技术,图像模糊(灰色、彩色图像高斯模糊)、图像导数(sobel算子滤波)

    文章目录 一.scipy方法实现图像模糊 1.灰度图像模糊 2.彩色图像模糊 二.图像导数 1.梯度的计算 2.导数的计算 一.scipy方法实现图像模糊 小花今天和我说:"她想要一种朦胧美 ...

  6. 拉格朗日插值——基于scipy实现

    python 实现 from scipy.interpolate  import lagrange x = [3, 6, 9] y = [10, 8, 4] lagrange(x,y) #poly1d ...

  7. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(一)

    作者:陈颖祥.杨子晗 编译:AI有道 数据预处理后,我们生成了大量的新变量(比如独热编码生成了大量仅包含0或1的变量).但实际上,部分新生成的变量可能是多余:一方面它们本身不一定包含有用的信息,故无法 ...

  8. Python模块(7)-SciPy 简易使用教程

    SciPy 简易使用教程 1. 符号计算 2. 函数向量化 3. 波形处理scipy.signal 3.1 滤波器 3.2 波峰定位 基于numpy的一个高级模块,为数学,物理,工程等方面的科学计算提 ...

  9. scipy butter 滤波器实现

    ​ 1.背景介绍 在深度学习中,有时会使用Matlab进行滤波处理,再将处理过的数据送入神经网络中.这样是一般的处理方法,但是处理起来却有些繁琐,并且有时系统难以运行Matlab.Python作为一种 ...

最新文章

  1. Nagios/Postfix 转发警报邮件到Office365
  2. 实战SSM_O2O商铺_08【商铺注册】Thumbnailator图片处理和封装工具类
  3. Linux常用命令和常见问题解决------第一章
  4. bzoj 2870: 最长道路tree
  5. [react] 使用ES6的class定义的组件不支持mixins了,那用什么可以替代呢?
  6. 遍历某路径下的所有文件
  7. C# 将字节流转换为图片
  8. 25 个必须记住的SSH 命令
  9. springboot 项目中控制台打印日志以及每天生成日志文件
  10. EF实体框架之CodeFirst五
  11. python 绘图库_Python安装可视化绘图库,你真的会了吗?一文告诉你全部
  12. 看云|专注于文档在线创作、协作、分享和托管
  13. 【Ablation Studies 理解】深度学习模型组件的对比实验/性能分析
  14. Gluster升级遇到的问题
  15. mysql数据库扫描工具_Scuba2019最新免费版|Scuba(数据库扫描工具)官方版下载_v10.0.3_9号软件下载...
  16. Redis (二) 数据库
  17. 7-2 大小写字母转换
  18. Java就业方向和自学提升方法总结黑马就业班资源分享
  19. [OHIF-Viewers]医疗数字阅片-医学影像-es6解构赋值-const{}=-let{}=
  20. unwrapped oracle,求助CentOS 5.4 +oracle 11g R2 ASM 模式 安装后 EM 启动后登陆不进去!

热门文章

  1. html网页设计制作大作业(div+css)个人博客(1个页面)
  2. 转载--研究者开发程序可分辨讽刺类语言
  3. Unsupervised Learning for Real-World Super-Resolution
  4. 翻页类视图 ViewPager
  5. 求百分比时,为什么不能用二个long类型的数相除求百分比?
  6. vim的常用命令常规操作
  7. Grabcut算法详解
  8. java grabcut,在OpenCV中应用GrabCut算法后获取相同的图像
  9. 实体间的联系存在着( )_【活动】迎新年送实体黑球+实况足球手游国服曼联精选抽黑视频!...
  10. 计算机毕设(附源码)JAVA-SSM基于协同过滤算法的食谱定制系统