• SCR截面速度、氨氮比等标准及相对标准偏差计算


    SCR截面速度、氨氮比等标准及相对标准偏差计算

    # -*- coding: utf-8 -*-
    """
    联系QQ:3123575367,专业SCR脱硝仿真。
    Created on Wed Sep 20 20:40:30 2023
    该程序用来处理fluent通过xyplot导出的数据,可计算标准偏差SD、相对标准偏差RSD,适用于求解平面的相对均匀度
    @author: PS
    """
    
    # -*- coding: utf-8 -*-
    """
    Created on Wed Sep 20 20:40:30 2023
    该程序用来处理fluent通过xyplot导出的数据,可计算标准偏差SD、相对标准偏差RSD,适用于求解平面的相对均匀度
    @author: PS
    """
    
    import chardet #识别文件的编码格式
     
    #确定文件编码格式
    def check_code(text):
        #detect函数只需要一个 非unicode字符串参数,返回一个字典。该字典包括判断到的编码格式及判断的置信度。
        with open(text, 'rb') as f:    
            adchar = chardet.detect(f.read())  
        # adchar = chardet.detect(text)
        # 由于windows系统的编码有可能是Windows-1254,打印出来后还是乱码,所以不直接用adchar['encoding']编码
    
        if adchar['encoding'] == 'gbk' or adchar['encoding'] == 'GBK' or adchar['encoding'] == 'GB2312':
            
            return 'GB2312'
        else:
            return 'utf-8'
    
     
        
    #读取文件并进行计算 
    def read_file_text(file_url):
        
        with open(file_url, 'r',encoding=check_code(file_url)) as f0:
            row_nul = 4
            for i in range(row_nul):
                next(f0)#跳行
            f0_word = f0.readlines()
            ls = []
            x=[]
            y=[]
            #将文本数据按照行整理到列表中
            for line in f0_word:
                    line = line.strip('\n')#将每段的回车替换为空格
                    line = line.replace(')','')
                    words = line.split()#将字符串以空格分开
                    ls.append(words)
                    
            #将列表中的数据按照列提取出来
            for lin in ls:
                    for l in range(len(lin)):
                        lin[l] = lin[l].strip('(')#去掉左右的((
                    while '' in lin:#将空格字符串删除
                        lin.remove('')
                    #最后一列为空值,需要跳过
                    if lin == ls[-1]:
                        break
                    x.append(float(lin[0]))#保存文本的第一列数据
                    y.append(float(lin[1]))#保存文本的第二列数据
            
            #计算
            #计算含0的数据
            mean = sum(y)/len(y)
            qh =[]
            for num in y:
                qh.append(pow(num-mean,2))
            qv = pow(sum(qh)/(len(qh)-1),0.5) #标准偏差 
            cv = qv/mean #相对标准偏差
            print('+++++++未操作数据 +++++++')
            print(f'平均值为:{round(mean,4)}')
            print(f'标准偏差(SD)为:{round(qv*100,4)} %\n相对标准偏差(RSD)为:{round(cv*100,4)} %')
            
            #计算去除0后的数据
            y_no_zero = [i for i in y if i!= 0] #去除0元素
            mean_no_zero = sum(y_no_zero)/len(y_no_zero)
            qh_no_zero = [pow(num-mean_no_zero,2) for num in y_no_zero]
            qv_no_zero = pow(sum(qh_no_zero)/(len(qh_no_zero)-1),0.5)
            cv_no_zero = qv_no_zero/mean_no_zero
            print('------------去除 0 数据------------')
            print(f'平均值为:{round(mean_no_zero,4)}')
            print(f'标准偏差(SD)为:{round(qv_no_zero*100,4)} %\n相对标准偏差(RSD)为:{round(cv_no_zero*100,4)} %')
            
            
    
     
     
    read_file_text(r'F:\20231230-scr-1.2\1231\5000\n1.xy') #只需要更改此处输入
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    +++++++未操作数据 +++++++
    标准偏差(SD)为:103.293 %
    相对标准偏差(RSD)为:29.7022 %
    ------------去除 0 数据------------
    标准偏差(SD)为:32.7746 %
    相对标准偏差(RSD)为:8.7266 %
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    相对标准偏差应当以去除0的数据为准,主要是因为在壁面附件上速度区域为0,这部分区域不予以考虑

    计算公式见:

    在这里插入图片描述

    适用于fluent通过该途径导出的文件处理。

    在这里插入图片描述

  • 相关阅读:
    react父页面监听子页面关闭,进而刷新列表
    学习笔记4——JVM运行时数据区梳理
    十大排序:快速排序
    Tcpdump命令详解
    java多线程面试总结,字节跳动java面试题
    交互与前端8 Tabulator+Flask开发日志005
    葡萄糖-聚乙二醇-人血清白蛋白,HAS-PEG-Glucose,人血清白蛋白-PEG-葡萄糖
    提高Producer的发送速度
    Echarts y轴相关配置
    安全漏洞笔记-Fastjson高危漏洞预警
  • 原文地址:https://blog.csdn.net/weixin_43245453/article/details/133220734