创建个人网站怎么做,装修网店,网站后台分类,wampserver做的网站1.命名并实体化一切非自解释的概念
这是算法设计的核心原则之一。可以进一步归结为#xff1a;你不可让逻辑匿名地裸露出来。你必须命名一切你知晓的概念#xff0c;并且通过注释、适当的代码粒度管理#xff0c;命名#xff0c;妥善封装这些概念#xff0c;比如#xf…1.命名并实体化一切非自解释的概念
这是算法设计的核心原则之一。可以进一步归结为你不可让逻辑匿名地裸露出来。你必须命名一切你知晓的概念并且通过注释、适当的代码粒度管理命名妥善封装这些概念比如
def isShartNotPlacedCenterized(arFreq, arValue, baseFreqOfShaft, arZeroDbValue):errorSpan 0.15ratio arFreq[0]/baseFreqOfShaftratio np.abs(ratio - 2)/2;if(ratioerrorSpan):score gp_vibration_helper.gp_getdbValuebyRawValue(arValue[0], arZeroDbValue);return (True, score);else:return (False, 0);上面的写法是错误的。正确的写法是 功能说明轴不对中判定版本V1.0.20240410机制轴不对中二倍频谱线明显增强ParamIn:(arFreq, arValue, baseFreqOfShaft, arZeroDbValue)arFreq 低通滤波后的频谱中前N条最高幅度谱线的频率值arValue 低通滤波后的频谱中前N条最高幅度谱线的幅值baseFreqOfShart 轴频arZeroDbValue 用作db输出的系统最高幅值点ParamOut:(hasError, errorValue)hasError 有此类故障范围True,否则Falsescore 故障严重程度[-40,0]单位dbdef isShartNotPlacedCenterized(arFreq, arValue, baseFreqOfShaft, arZeroDbValue):isflag2xFreqAppeared gp_vibration_helper.gp_IsSignalAppear(arFreq[0], 2*baseFreqOfShaft);if(isflag2xFreqAppeared):dbOfSignal gp_vibration_helper.gp_getdbValuebyRawValue(arValue[0], arZeroDbValue);if(dbOfSignal-40):return (True, dbOfSignal);return (False, 0);
2.在进行任何探索性工作前必须构建好桩模块
比如在进行轴承振动分析时你很快会在构建代码的过程中遇到一堆问题比如
包络计算频点计算db坐标与线性坐标转换功率谱密度、功率谱、与幅度谱频谱泄露窗函数相关性分析
这个列表是无穷尽的明白吗。如果一路走下去你会迷失在这个知识网络里单独拉出任何一个项点都是10小时甚至更多时间的阅读和仿真工作量。比如
使用 FFT 获得功率频谱密度估计- MATLAB Simulink- MathWorks 中国
这个时候哪怕你做错也必须按照错的做完留下类似#TODO标记然后快速构建好整套系统然后再回头重构。
重构这个词源自一个已经可以工作的版本。没有这个版本的存在你的工作是未完成得0分。一个小学生过来把接口封装好人家领5元钱走人你一分都不该发——你没有提供应有的服务。
你确实清楚此时的理解是不完备的甚至写下来就是错的或者误差很大无法在工程上输出稳定结果。但是即使是错误也值得记录下来。因为它代表着一个随时可以拿起作为参照的凝固的理解。比如这个对于轴振动故障的一份完整示例
import numpy as np
import sys
import gp_vibration_helper
功能说明isShartNotPlacedCenterized功能轴不对中判定版本V1.0.20240410机制轴不对中二倍频谱线明显增强ParamIn:(arFreq, arValue, baseFreqOfShaft, arZeroDbValue)arFreq 低通滤波后的频谱中前N条最高幅度谱线的频率值arValue 低通滤波后的频谱中前N条最高幅度谱线的幅值baseFreqOfShart 轴频arZeroDbValue 用作db输出的系统最高幅值点ParamOut:(hasError, errorValue)hasError 有此类故障范围True,否则Falsescore 故障严重程度[-40,0]单位dbdef isShartNotPlacedCenterized(arFreq, arValue, baseFreqOfShaft, arZeroDbValue):isflag2xFreqAppeared gp_vibration_helper.gp_IsSignalAppear(arFreq[0], 2*baseFreqOfShaft);if(isflag2xFreqAppeared):dbOfSignal gp_vibration_helper.gp_getdbValuebyRawValue(arValue[0], arZeroDbValue);if(dbOfSignal-40):return (True, dbOfSignal);return (False, 0);isShartNotPlacedCenterized功能轴不平衡判定机制轴不平衡一倍频谱线明显增强版本V1.0.20240410ParamIn:(arFreq, arValue, baseFreqOfShaft, arZeroDbValue)arFreq 低通滤波后的频谱中前N条最高幅度谱线的频率值arValue 低通滤波后的频谱中前N条最高幅度谱线的幅值baseFreqOfShart 轴频arZeroDbValue 用作db输出的系统最高幅值点ParamOut:(hasError, errorValue)hasError 有此类故障范围True,否则Falsescore 故障严重程度[-40,0]单位dbdef isShartLoadNotCenterized(arFreq, arValue, baseFreqOfShart, arZeroDbValue):isflag2xFreqAppeared gp_vibration_helper.gp_IsSignalAppear(arFreq[0], baseFreqOfShaft);if(isflag2xFreqAppeared):dbOfSignal gp_vibration_helper.gp_getdbValuebyRawValue(arValue[0], arZeroDbValue);if(dbOfSignal-40):return (True, dbOfSignal);return (False, 0);gpGetShaft_HealthScore功能轴故障判定机制返回不对中不平衡的判断结果[百分制]版本V1.0.20240410ParamIn:(fft_abs_array, scaleOfFreq, baseFreqOfShaft)fft_abs_array 原始振动加速度采样值的幅度值序列单位幅度scaleOfFreq 加速度序列的档位单位HzbaseFreqOfShart 轴频ParamOut:(scoreOfShaftLoad scoreOfShartCenter)scoreOfShaftLoad 轴平衡健康度[0,100]scoreOfShartCenter 轴对中健康度[0,100]def gpGetShaft_HealthTestResult(dbView_fftOfVirbation, scaleOfFreq, baseFreqOfShaft):(arFreq, arValue) gp_vibration_helper.gp_getdbValuebyRawValue(dbView_fftOfVirbation, scaleOfFreq, baseFreqOfShaft)if(arValue[0]-40): #小于40db健康return (100, 100)maxValueInFullFreqRange np.max(dbView_fftOfVirbation);(errLoad, dbLoad) isShartLoadNotCenterized(arFreq, arValue, baseFreqOfShaft, maxValueInFullFreqRange);(errCenter, dbCenter) isShartLoadNotCenterized(arFreq, arValue, baseFreqOfShaft, maxValueInFullFreqRange);scoreOfShartLoad 100;scoreOfShartCenter 100;if(errLoad):errorPercent 100/40*(dbLoad-(-40.0))scoreOfShaftLoad 100 - errorPercent;if(errCenter):errorPercent 100/40*(dbCenter-(-40.0))scoreOfShartCenter 100 - errorPercent;return (scoreOfShartLoad, scoreOfShartCenter);
它不对不够准确但是这是你现阶段的一份可能输出物这就够了。 【待续...】