ITU-T G.169标准解读:自动水平控制功能

版权申诉
0 下载量 68 浏览量 更新于2024-10-18 收藏 219KB RAR 举报
资源摘要信息: "国际电联标准ITU-T G.169" 知识点详细说明: 1. 国际电联 (International Telecommunication Union - ITU) 国际电联是联合国的一个专门机构,负责协调全球信息通信技术事务,并制定相关标准。其下属的电信标准化部门(ITU-T)主要负责电信网络、服务和应用方面的标准化工作。 2. ITU-T ITU-T是国际电联电信标准化部门的缩写,负责制定全球电信领域的标准和建议书,旨在促进全球通信系统的互操作性。ITU-T G.169是该组织发布的一个标准文档。 3. ITU-T G.169标准 ITU-T G.169标准,全称为“功能自动水平控制”,涉及的是一项通信技术或设备的性能要求和测试方法。标准详细规定了如何对功能自动水平控制系统进行设计、评估和测试。这种控制系统通常用于电信设备和网络中,以确保设备能够在不同的操作条件下自动调整其工作性能,以达到最佳的性能表现。 4. 功能自动水平控制 功能自动水平控制通常是指系统或设备根据预设条件或实时检测到的环境变化,自动调整其内部参数以保证设备性能的稳定性与最优性。这一功能在通信领域尤为重要,因为它涉及到信号的传输质量、网络的稳定性等多个关键性能指标。例如,在音频通信中,自动增益控制(AGC)就是一种常见的功能自动水平控制技术,它能够自动调整信号的放大级别以适应不同的输入信号强度,保证输出信号的质量。 5. 标准文件格式 给定的文件名称为“T-REC-G.169-201105-I!!PDF-E.pdf”,表明该文档是以PDF格式发布的国际电联标准文件。文件中的"I!!"可能是一种特定的格式标记,用于标识文件的版本或修订状态。"E"可能代表文档的英文版本。 6. 版本信息 “-201105-”部分指的是该标准文档的发布日期或版本号。在这里,它表明了这个文档是在2011年5月发布的。文档的发布日期对于了解标准的时效性和可能的更新非常重要。 7. 重要性和应用场景 了解并实施ITU-T G.169标准对于通信设备制造商、网络运营商和相关行业从业人士具有重要意义。掌握这一标准能够帮助相关人员设计、测试和维护符合国际标准的通信系统和设备,从而提升系统的整体性能和用户体验。 8. 与其他国际标准的关系 ITU-T G.169标准可能与其他国际标准存在关联,比如与音频信号处理、电信网络性能评估等领域。了解其与其他标准的关系有助于深入理解通信技术的全面要求。 总结:ITU-T G.169标准是国际电联电信标准化部门(ITU-T)制定的关于功能自动水平控制的技术文档。该标准详细规定了自动水平控制系统的性能要求和测试方法,用于确保通信设备和网络能在各种环境下保持最佳性能。文件格式为PDF,文件名称包含了标准发布日期和语言标识,表明了文档的版本和适用语言。了解这一标准对于通信行业的相关专业人员至关重要,有助于提升通信系统性能并符合国际规范。

帮我把下面一段C++代码改写成python代码:#include "Trade.h" #include "WPrice.h" #include <algorithm> double normalCDF(double x) // Phi(-∞, x) aka N(x) { return std::erfc(-x / std::sqrt(2)) / 2; //erfc()是互补误差函数,该返回值表示标准正态分布下var小于x的概率,即N(x) } CTrade::CTrade(double tick) : wp_bid(0.01), wp_ask(0.01), m_tick(tick), m_TimeRound(50) { newday(NULL); } CTrade::~CTrade() { } void CTrade::OnBook(const BTRec& btRec) { wp.setGamma(0.1); wp_bid = wp.getWP(&btRec.Bids); wp_ask = wp.getWP(&btRec.Asks); if (wp_mid > 0){ //wp_mid初始化为-1,仅遇到第一条BTRec记录时条件为false double wp_now = (wp_bid + wp_ask) / 2; //updated wp_mid int volume = btRec.volume; //volume between two orderbook records double ratio = normalCDF((wp_now - wp_mid) / (2 * m_tick)); //m_tick = tick = 0.2 double buyvolume = ratio*volume, sellvolume = (1 - ratio)*volume; m_TimeRound.update(buyvolume, sellvolume, btRec.rec_time.timestamp); //volume moving average if (mv_volume < 0) { mv_volume = volume; mv_buyvolume = buyvolume; } else{ mv_volume += 0.002*(volume - mv_volume); mv_buyvolume += 0.002*(buyvolume - mv_buyvolume); } // round trip volatility if (time_ini < 0 || btRec.rec_time.timestamp - time_ini >= time_scale){ if (time_ini>0){ double dp = wp_now - wp_ini; volatility += 0.05*(dp*dp - volatility); } time_scale = m_TimeRound.getTime() * 1000; //in milliseconds time_ini = btRec.rec_time.timestamp; wp_ini = wp_now; } } wp_mid = (wp_bid + wp_ask) / 2; } void CTrade::newday(const char* p) { wp_mid = -1; m_TimeRound.newday(p); volatility = 16 * m_tick*m_tick; time_slapse = -1, time_scale = -1, wp_ini = -1, time_ini = -1; mv_buyvolume = mv_volume = -1; }

2023-05-15 上传

解释下Peoplesoft的这段代码 Component array of array of any &tmpArray; Local Record &rec1, &rec2; &rec1 = CreateRecord(Record.HIK_IPSANRS_TBL); &rec2 = CreateRecord(Record.HIK_IPSAN_TBL); Local Rowset &rsLvl1, &rsDtl; Local number &i, &j; Local Row &row; &rsLvl1 = GetLevel0()(1).GetRowset(Scroll.WPS_STR_INF_TBL); For &i = 1 To &rsLvl1.ActiveRowCount &rsDtl = &rsLvl1(&i).GetRowset(Scroll.WPS_STR_DTL_TBL); For &j = 1 To &rsDtl.ActiveRowCount &row = &rsDtl(&j); If Not &row.IsDeleted Then If All(&row.WPS_STR_DTL_TBL.WPS_GP_AMT_ID.Value) Then &rec1 = CreateRecord(Record.WPS_IPSANRS_TBL); &rec1.WPS_GP_AMT_ID.Value = &row.WPS_STR_DTL_TBL.WPS_GP_AMT_ID.Value; &rec1.EFFDT.Value = &row.WPS_STR_DTL_TBL.EFFDT.Value; If &rec1.SelectByKey() Then &rec1.WPS_GP_AMT_ID.Value = &row.WPS_STR_DTL_TBL.WPS_GP_AMT_ID.Value; &rec1.EFFDT.Value = &row.WPS_STR_DTL_TBL.EFFDT.Value; &rec1.STATUS.Value = &rsLvl1(&i).WPS_STR_INF_TBL.STATUS.Value; &rec1.Update(); Else &rec1.WPS_GP_AMT_ID.Value = &row.WPS_STR_DTL_TBL.WPS_GP_AMT_ID.Value; &rec1.EFFDT.Value = &row.WPS_STR_DTL_TBL.EFFDT.Value; &rec1.STATUS.Value = "A"; &rec1.Insert(); End-If; &rec2 = CreateRecord(Record.WPS_IPSAN_TBL); &rec2.WPS_GP_AMT_ID.Value = &row.WPS_STR_DTL_TBL.WPS_GP_AMT_ID.Value; &rec2.EFFDT.Value = &row.WPS_STR_DTL_TBL.EFFDT.Value; &rec2.WPS_STORID.Value = &row.WPS_STR_DTL_TBL.WPS_STORID.Value; &rec2.WPS_GP_WAGECODE.Value = &row.WPS_STR_DTL_TBL.WPS_GP_WAGECODE.Value; If Not &rec2.Insert() Then &rec2.Update(); End-If; End-If; End-If; End-For; End-For;

2023-06-13 上传