`
shangjava
  • 浏览: 1252099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ODI KM二次开发手册

阅读更多

1 引言

1.1 编写目的

本手册面向的读者对象为具备数据集成业务知识及对ODI操作了解的开发人员,作为其完成基于ODI基础上KM二次开发的参考手册。详细介绍了如何在ODI上进行KM二次开发,以满足用户数据集成特定场合下的个性化需求。

2 开发模板KM介绍

2.1 KM概述

KM(Knowledge Modules:知识模块)在ODI中是一组代码模板。在集成过程中,每一个KM对应一个特定任务,整个数据集成过程通过选择若干个KM代码模板生成执行代码而完成集成工作。

KM具有抽象性和可重用性,它是对集成过程规则和过程的描述,是对逻辑任务的抽象,而与具体的物理对象(如数据表、物理路径、列等)无关。在集成时,用户通过调用这些规则和过程,将接口、模型、包中存储的元数据信息(具体的数据库连接、映射关系等)作为参数注入到KM中,因此KM类似于一个抽象接口,与具体的业务对象分离开来,从而使得一个KM能够被多个集成项目可用。因此KM是对数据集成过程和规则的高度抽象和总结,通过开发一整套的KM库可以极大的降低数据集成的复杂度。

ODI平台为不同的集成场景和过程准备了多个KM,用户可以通过调用这些KM完成不同的集成需求;另外KM也允许用户自己扩展、重写,当已有KM模板无法满足集成需求时,可以通过自定义编写KM而完成特殊场景下的个性化需求。

2.2 KM分类

ODI根据集成过程和功能的不同将KM分为以下几大类:RKM(Reverse KM)、CK(Check KM)、LKM(Load KM)、IKM(Integretion KM)、JKM(Journalizing KM)、SKM(Service KM),每一类KM完成特定类功能,如下表2-1所示:

KM类型

描述

使用场景

RKM

作反向工程,抽取元数据

在模型中使用,抽取元数据

CKM

检查数据是否满足约束

在模型中使用,为数据一致性

在接口中使用,为数据流程控制

LKM

加载异构数据到临时区域

在接口中使用,加载异构数据源

IKM

整合临时区域数据到目标

在接口中使用

JKM

创建变化数据捕获框架

在模型中使用,开启或者关闭日志

SKM

生成数据操作Web services

在模型中使用

表2-1:KM分类及功能

下面将分别详细介绍每一类KM:

2.2.1 RKM

RKM的主要职责是将模型数据反向至工作资料库中。RKM连接到数据源和应用系统中,从源中抽取模型、数据存储、字段等信息,将其数据经过清洗、转换后加载至SNP_REV_SUB_MODEL,SNP_REV_TABLE等表中,然后RKM通过调用OdiReverseSetMetaData API将这些信息更新到工作资料库。根据其反向数据源的不同,RKM又分为以下类型RKM Oracle、RKM DB2、 RKM File、RKM SQL(JYTHON)等。下图2-1为RKM工作流程:

clip_image002

图2-1:RKM工作流程

2.2.2 CKM

CKM主要用作数据记录一致性检查以及定义约束关系,主要用于两处:

n 检查静态数据一致性:此类CKM作用于模型,通过设立约束条件,可以清洗、过滤数据,只按需集成所需数据,例如通过添加CKM,只取年龄大于18的学生数据。

n 在加载过程中检查数据:此类CKM在接口中使用,做数据流程过程中的数据控制,通过将Designer中FLOW_CONTROL选项改为是,可以启用此CKM。

n 另外CKM会在临时区域创建前缀为E$的错误表存放非法数据。

其处理流程如下图2-2所示:

clip_image004

图2-2:CKM

clip_image006

图2-3:流数据控制

2.2.3 LKM

LKM主要用于将数据源上的数据信息读取至临时区域中、在Interface的设计中使用LKM,将源数据存储至临时区域的C$表中,其处理的主要工作有:

n LKM从远程的数据源抽取数据并加载到临时区域,在接口中使用;

n LKM在临时区域创建C$表,并把数据加载到C$表中;

n LKM执行一些简单的预转化工作,就像SQL语句中的SELECT语句。

另外,针对不同的数据源,分别对应不同的LKM,如:LKM SQL to SQL(JYTHON)、LKM SQL to SQL、LKM Oracle to Oracle(DBLINK)、LKM MSSQL to MASQL(BCP)等等,其处理流程如下图2-4所示:

clip_image008

图2-4:LKM工作流程

2.2.4 IKM

IKM的作用是将转换后的最终数据加载至目标中,IKM在使用前在确保所有数据都事先通过LKM加载到了临时区域,IKM直接从临时区域中获取数据。IKM根据临时区域位置的不同分为两种类型。第一种类型为临时区域在目标上的IKM,另一类为临时区域不在目标端上,其处理过程为

n 在接口中根据实际场景选择IKM类型

n 源是临时区域的C$表,经过转化生成结果集,结果集存放在I$表中,再由I$表合并到目标表当中

n 如果加入CKM,则合并过程中不符合规则的数据通过CKM放到E$表当中

其流程图2-5如下所示:

clip_image010

图2-5:临时区域在目标服务器

clip_image012

图 2-6:临时区域不在目标服务器

2.2.5 JKM

JKM的作用是捕获变化数据,主要用作在CDC(Change Data Capture)时对增量变化的数据做捕获,为增量集成做准备。JKM通过在数据源上建立触发器或通过日志位、标记位等方式将变化的数据加载至日记表中(J$),供集成到目标时所用。

n JKM在模型上使用,不能在接口中使用

n JKM自动设置并创建框架所需的参数、表、触发器、视图。

n JKM框架还包含ODI维护的CDC的元数据

其处理流程如下图2-7所示:

clip_image014

图2-7:JKM处理流程

2.2.6 SKM

SKM的作用是将数据操作部署为Web Service,发布到SOA架构中去。SKM作用于模型,不象其他KM,SKM并不产生可执行的代码,而仅产生部署描述文件,这些文件被编译然后部署到应用服务器的容器中,这样通过SKM,调用Web Service就可以访问到ODI发布的数据服务。

3 KM开发规则

上一部分介绍了KM的基本内容、体系框架以及各个KM的功能、用途,这一部分将从实际入手介绍如何自定义开发一个KM以供集成所用,下面部分将从开发语言、开发平台、开发规则等部分进行详细介绍。

3.1 KM开发语言

在开发语言规则上,KM支持Jython、标准SQL以及ODI的Substitution Method,可以通过对这几种脚本语言或开发语言进行组合、拼装来编写KM;

不同的知识模块,不同的步骤,显示的可能不太一样,有些是SQL语句,有些则是JAVA语言(Jython脚本),然后还会出现一些类似odiRef.getInfo()的函数,关于这些宏变量和函数的具体含义可以从ODI的参考文档里找到。每一个知识模块的步骤既可以删除,也可以增加,所以可以非常容易地实现 ODI的扩展。通过在一个原有的知识模块上修改形成新的知识模块是最容易的定制方式,另一种方式是完全可以通过Jython这种语言来写知识模块,则是一种更加灵活和复杂的知识模块的定制方式。

3.1.1 Jython

Jython语言是KM编写的脚本语言,在ODI中可以用Jython来编写KM,也可以把Jython代码混合在SQL、PL/SQL、OS中。正是由于Jython语言,使得ODI在可编程性上得到极显著的提高,可以通过Jython执行复杂的操作(如操作字符串、List、访问FTP、管理文件、调用外部JAVA类等)。

Jython是Python编程语言100%纯Java实现,它结合了Python和Java虚拟机和库的优点,成为了Java平台的有益补充。

最初的Jython又称为JPython,是一个十足的Java应用程序,它允许使用Python编程语言的语法和大多数特性。和其它编程语言比较,Jython有如下几个优点:

n Python解释器shell的Jython版本可以对某些想法和API作便利的实验和研究。而不必经历一般的Java编译运行周期。

n Python被设计成动态且通用的,因此你不必通过使用复杂的库(如用于Java反射和内省的库)来添加这些特性。这使开发更简单,而且它在自动测试框架中特别有用。

n 部署简捷,提供了及时部署能力,无需花大量时间在打包和编译周期上。

n 易于学习和使用,技术门槛低,可以轻松地找到大量的使用者。

3.1.2 Substitution API

KM中包含有大量的substitution API方法,通过调用类似getTable()、getObjectName()等这样的替换方法而不直接将物理表名、模式名、catalog硬编码到KM中,提高了KM的可重用性,防止了硬编码问题。另外,通过直接调用ODI提供的这些substitution API也降低了代码开发的难度,能够直接调用到相关元数据信息。因此在KM的编写中,substitution API的合理使用和调用显得尤为重要,合理的使用substitution API将降低KM的开发难度、保证KM质量。

Substitution API中的方法均为java编写,返回值为字符串,整个KM中通过调用这些substitution Method获取在主工作库和工作资料库里的元数据信息。如下表为一段substitution API运行示例,通过调用API中的方法,编译运行后就得到了具体的程序代码。

代码

KM中代码

(编译前)

Create table <%=odiRef.getTable("L", "INT_NAME", "A")%>

(

<%=odiRef.getColList("", "\t[COL_NAME] [DEST_CRE_DT]", ",\n", "", "")%>

)

经ODI

编译后

Create table db_staging.I$_PRODUCT

(

PRODUCT_ID numeric(10),

PRODUCT_NAME varchar(250),

FAMILY_ID numeric(4),

SKU varchar(13),

LAST_DATE timestamp

)

关于在KM中调用Substitution的详细语法规则将在下一节中详细讲述。

3.1.3 SQL

在ODI中,大部分的数据集成的工作是通过SQL语句来完成的,例如源数据到临时区域、临时区域数据到目标等操作,因此在KM中有大量的SQL操作对数据做Insert、Update、Delete操作。仔细阅读KM就会发现大部分的KM步皱代码都是在SQL语句中嵌入Substitution Method,或用Jython语言做流程控制等;在Operator里查看也会发现,编译后的KM大多是规范的SQL语句,因此在KM编写、开发的过程中,SQL的编写也是很重要的一个步骤。

例如,以下是LKM SQL TO SQL 中Load Data步骤,里面就是在SQL语句的整体框架下通过嵌入Substitution Method方法完成的:

insert into <%=snpRef.getTable("L", "COLL_NAME", "A")%>

(

<%=snpRef.getColList("", "[CX_COL_NAME]", ",\n\t", "","")%>

)

values

(

<%=snpRef.getColList("", ":[CX_COL_NAME]", ",\n\t", "","")%>

)

3.2 开发规则

3.2.1 KM中Jython使用规则

ODI中可以运行、编译Jython脚本,如LKM SQL TO SQL(Jython)就是通过Jython脚本调JDBC完成源数据读取的,另外其他很多KM也是通过Jython来编写;另外利用Jython可以引用外部开发好的JAR包,这样除了ODI自带的Substitution API外,其可利用API的范围将极大扩展,任何JAVA写的API通过Jython都能够被引用,因此在KM中加入Jython这样一门程序语言,将使KM更具灵活性,增强其可扩展性。学会在KM中编写Jython脚本就显得尤为重要,下面将简要介绍Jython的开发规则,关于Jython的详细语法可以参考ODI提供的《Jython Quick Reference》或其他Jython方面介绍的书籍。

在KM中使用Jython有以下需要注意的一些地方

n Code execution:Jython的语句是按顺序执行的,同时也支持if, for,while,raise控制结构

n Block:Jython以行作为其块区域,一个Block以相同的行对齐或空格符标识

n 注释:Jython的注释以字符#开头,以此行物理行的末尾为结束标识

n 关键词:以下这些标识符为Jython默认保留的关键词,不允许变量去声明

and del for is raise assert elif from lambda return break

else global not try class except if or while continu exec

import pass def finally in print

n 数据类型:Jython的数据类型支持Number(Decimal integer,octal integer,Hex integer,Long integer,Float,Complex numbers)、String、Lists、Dictionaries、Tuples、Sequence、Files等。

n 外部类加载:在KM中用Jython加载外部类,使用import命令,另外外部的类文件需要在classpath路径下。

3.2.2 KM中Substitution API调用规则

Oracle Data Integretor中提供了大量已开发好的Substitution API,在开发中会经常直接调用这些API方法以获取存储在资料库中的元数据信息,Substitution API能够在KM中的任意位置调用,在<% %>符号内引用,其返回值是一个字符串,具体开发调用规则如下表3-1所示:

选项

说明

调用位置

Substitution API能够在KM中的任何位置插入

调用方式

调用时以<% %>括起,Substitution API的方法写在括号内

调用语法

目前ODI 10.1.3.2.0版本中的Substitution API方法以snpRef开头调用,要调用getForm()这样的Substitution Method时,只需编写odiRef.getForm()即可。

调用时间

Oracle Data Integretor的API集成自snpReference类,snpRef的实例类能够在ODI平台运行时的任何时间获得

API方法

Substitution API中的方法种类繁多,全局方法、日志方法、加载方法、检查方法、整合方法、反向工程方法、Web服务方法、动作方法等,对这些具体方法的调用参考ODI提供的《Substitution Methods Reference》,对每一个方法的用途和参数均有详细说明。

表3-1:开发规则表

其常用语法具体如下:

【Free Text】 【<% Java Expression %>】

Free Text:代码块中的任意位置

Java Expression:构建字符串的Java表达式。

Java表达式举例:snpRef.getTableName(”WORK_TABLE”) + “FUTURE”

CKM的特别语法:

下面的语法用在IKM中,调用检查过程(CKM)

<% @include CKM_FLOW/CKM_STATIC DELETE_ERRORS %>

CKM_FLOW:根据接口->控制中选择CKM,触发流控制。

CKM_STATIC:触发目标数据存储中的静态控制。检查数据存储中的常量或者静态常量。

DELETE_ERRORS:自动删除检测到的错误。

动作中使用置换方法:

<% odiRef.method_name(); %>

例如:<% odiRef.dropRefferingFKs(); %>

PS:不要使用”=”,并且以分号结束。

动作一般是:add、drop、enable、disable、modify。

3.2.3 GUIDELINES (相关指南)

在KM的修改、开发中,遵循以下相关指南、规则,将使开发过程变得更为轻松、灵活,以下是我们归纳总结的一些经验、指南:

n 不要从无到有开发你的KM,这样的话成本代价太大。ODI已经提供了100多种KM,因此建议在编写KM之前先了解一下已有的KM,手中的KM样例越多,开发起来速度越快。例如,可以复制利用已有的一些代码对它进行改进、增强,或者将相似的代码部分拷贝、移植到新开发的KM中,实现重用。

n 在KM中尽量少使用硬编码的方式,物理表名、模式名、catalog尽量少以硬编码的方式写入到KM中;而应该多使用诸如getTable(),getObjectName()这样的API方法,以增强KM的通用性。

n 在KM中多使用SQL语句,而不要全部都用Java或Jython语言,因为SQL语句更易于阅读和维护。

n 另外,对于新开发的KM,也要以编于理解的名字命名。

3.3 开发平台

3.3.1 ODI上开发

对于KM的开发,可以直接在ODI平台上进行,其具体步骤如下所示:

1、 在ODI中点击进入Designer→项目→知识模块

clip_image015

2、 选定需要编辑的KM、及KM的哪个步骤,如下图编辑的是LKM File to DB2 UDB(load),则双击进入即可。

clip_image016

3、 选中所需要编辑的KM步骤,点击详细步骤→具体的某个步骤,即可进行KM的编辑了,另外也可以新增或删除步骤。

clip_image017

4、 双击具体的某个步骤,即进入代码界面,进行KM的编写。

clip_image019

5、 对于编写好的KM,只能通过接口调用后运行,在Operator中查看代码执行情况,检查其正确与否。

clip_image020

3.3.2 Eclipse开发

如果是直接在Designer里面编写KM,然后供接口调用、从Operator里查看执行结果,这种方式开发效率低下、对代码错误无法判断。因此需要选取一个开发平台,能够直接在平台上对KM进行开发、编译、调试。

开源插件JyDT支持在Eclipse平台下开发、调试、编译Jython代码,在Eclipse平台下开发KM,然后移植到ODI中,将极大的提高开发效率,但是以这种方式开发KM也要注意以下几个问题:

n Eclipse JyDT仅支持Jython开发,对于混合了Subsititution API的KM来说,Eclipse直接调用不了这些存储在资料库里的信息

n 对于上述情况可以采用一种变通的方法,即先在接口中运行KM,在Operator中得到KM编译过的代码后,再将代码移植到Eclipse中做修改,这样Subsititution API中的方法已经经过编译,转换成了实际的物理配置信息

n 对于由大量SQL语句组装成的KM,Eclipse无法编辑

由此可见Eclipse开发平台适用于那些由Jython直接编写的KM,因此对KM的开发可以由两个平台结合起来,按实际情况选用以提高开发效率。

== 文档结束 ==

本文转自:http://dangdj.spaces.live.com/blog/cns!EDE097CEA39ABC75!186.entry

分享到:
评论

相关推荐

    CSDN博客之星:技术交流与个人品牌共筑的分享盛会

    文案: “CSDN博客之星”是技术人的闪耀舞台,汇聚创新与分享的力量!通过参与评选,你不仅能提升个人品牌,还能链接行业精英,拓展技术视野。活动见证无数博主的成长,助力优质内容传播。无论你是技术爱好者还是资深从业者,这里都能让你展现才华,加速成长。原创干货、粉丝互动、持续输出——掌握这些秘诀,让你的博客脱颖而出,成为下一个“博客之星”!

    mpls-ospf全all

    mpls-ospf全all

    三菱FX3U PLC基于ST结构化文本与梯形图的四仓位配方控制系统解析

    内容概要:本文详细介绍了基于三菱FX3U PLC的四仓位配方控制系统,重点讲解了如何利用ST结构化文本和梯形图两种编程方式实现工业级配方管理。主要内容包括配方存储采用结构体数组的方式,使配方参数管理更加高效;配方执行过程中使用ST语言实现复杂的三段速控制逻辑,确保精确配料;通信方面通过FX3U-485ADP模块进行Modbus通信,保障数据传输的实时性和稳定性;报警系统采用状态码机制,便于快速定位和解决问题;此外,还涉及了分期付款功能以及暂停续料功能的具体实现方法。整个系统经过实际项目的验证,能够稳定应对每日200+批次的生产任务。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程有一定了解并希望深入掌握ST结构化文本和梯形图混合编程技巧的人群。 使用场景及目标:适用于需要高精度、高效率配方管理的工业生产线,如食品加工等行业。主要目标是提高生产效率,减少人为错误,增强系统的可靠性和易维护性。 其他说明:文中提供了大量具体的代码片段和实际案例,有助于读者更好地理解和应用所介绍的技术。同时强调了全中文变量命名的优势,使得新入职员工也能迅速上手。

    嵌入式系统开发-蓝桥杯STM32实战解析-第十四届模拟题代码与考点精讲

    内容概要:本资源包含2023年第十四届蓝桥杯嵌入式组省赛第一套模拟题的完整实现代码,涵盖STM32CubeMX工程配置、HAL库开发、传感器数据采集、LCD显示控制、按键中断处理等核心模块。配套代码注释详细,包含模块化工程结构设计思路及竞赛评分要点解析。 适用人群:电子类专业本科/高职学生、蓝桥杯嵌入式组参赛选手、STM32开发初学者、嵌入式系统设计爱好者。 使用场景及目标:适用于蓝桥杯赛前专项训练、嵌入式系统开发实战演练、STM32HAL库应用学习。通过本资源可掌握竞赛级项目开发规范,提升外设驱动开发能力,理解实时数据采集与界面交互的实现逻辑。 其他说明:代码基于STM32G4系列开发板实现,包含多任务调度框架设计,涉及ADC/DAC、TIM定时器、GPIO中断等关键外设操作。建议配合官方开发板使用,资源包含硬件连接示意图及调试排错指南,注意部分外设配置需根据实际硬件调整。

    基于MATLAB的8字漂移轨迹车辆动力学仿真建模与实现

    内容概要:本文详细介绍了如何利用MATLAB构建一个能够模拟8字漂移动态特性的车辆模型。首先,通过设定车辆的基本参数(如质量、轴距、转动惯量)以及控制器参数(如比例系数、滑移率微分系数),并采用双频正弦波叠加的方法生成8字轨迹。接着,深入探讨了轮胎滑移率的非线性特性及其对横摆角速度的影响,展示了如何通过引入迟滞效应使仿真的物理行为更加逼真。此外,文中还讨论了转向增益、扭矩分配等关键因素对漂移稳定性和轨迹精度的作用,并提供了具体的代码实现方法。最后,通过轨迹可视化工具验证了模型的有效性。 适合人群:对汽车动力学感兴趣的研究人员、工程师以及有一定MATLAB编程基础的学习者。 使用场景及目标:适用于研究车辆动态性能、开发自动驾驶系统或进行赛车运动分析等领域。主要目标是帮助读者掌握车辆动力学建模的基本原理和技术手段,同时提高其解决复杂工程问题的能力。 其他说明:文中不仅给出了完整的代码示例,还分享了许多实用的小贴士,如如何调整参数以获得更好的仿真效果,以及如何优化代码结构以提升运行效率。对于希望深入了解车辆控制系统设计的人来说,这是一份不可多得的学习资料。

    ssm服装定制系统 LW PPT.zip

    Java项目基于ssm框架的课程设计,包含LW+ppt

    Delphi 12.3控件之WebView2Loader.rar

    Delphi 12.3控件之WebView2Loader.rar

    网页基础开发指南:HTML、CSS、JavaScript、JSON与Ajax详解

    内容概要:本文详细介绍了网页开发的基础技术,涵盖HTML、CSS、JavaScript、JSON和Ajax五个方面。首先讲解了HTML的历史和发展,重点介绍了HTML标签及其用法;接着阐述了CSS的导入方式、选择器和样式设置;随后深入探讨了JavaScript的基础语法、内置对象和DOM操作;再者解释了JSON的语法和数据类型,强调其在数据交换中的重要性;最后介绍了Ajax技术及其应用场景,展示了如何使用原生XMLHttpRequest、jQuery和Axios进行异步请求。 适合人群:适用于初学者和有一定经验的前端开发人员,帮助他们全面掌握网页开发的基础知识和技术。 使用场景及目标:① 初学者可以通过本文快速入门HTML、CSS和JavaScript,搭建简单的网页;② 已有基础的开发者可以深入了解JSON和Ajax,提升数据处理和异步交互的能力。 阅读建议:本文内容详尽,建议按章节逐步学习,结合实例代码进行练习,以便更好地理解和掌握各项技术要点。

    计算机科学与技术- 软件开发工具 培训资料

    计算机科学与技术- 软件开发工具 培训资料

    FX3U PLC控制器硬件与嵌入式开发详解:STM32F103VCT6为核心的工业控制解决方案

    内容概要:本文深入剖析了FX3U PLC控制器的硬件架构及其嵌入式开发细节。首先介绍了控制器的整体规格,如尺寸、主控芯片(STM32F103VCT6)、电源设计等。接着详细讲解了数字量输入输出模块的设计,包括继电器输出和光耦隔离的应用。对于模拟量处理部分,则探讨了ADC的校准与抗干扰措施。此外,通讯模块的设计也是重点之一,涵盖了CAN总线、RS485等接口的具体实现方法。最后,文章还提到了开发资料的完整性以及一些优化建议。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC控制器和嵌入式开发感兴趣的读者。 使用场景及目标:帮助读者理解FX3U PLC控制器的工作原理,掌握其硬件设计特点和嵌入式编程技巧,适用于小型产线控制系统或智能仓储系统的开发。 其他说明:文中提供了大量源代码片段,便于读者更好地理解和实践相关知识点。同时强调了在实际应用中需要注意的问题,如电磁兼容性和信号完整性等。

    ssm高校网课管理系统lw+ppt.zip

    Java项目基于ssm框架的课程设计,包含LW+ppt

    基于MATLAB仿真的三电平逆变器SVPWM控制技术详解及其应用

    内容概要:本文详细介绍了基于MATLAB/Simulink的三电平逆变器SVPWM(空间矢量脉宽调制)控制系统的构建方法。首先,文章讲解了NPC(中点箝位)结构的三电平逆变器主电路搭建步骤,包括IGBT模块的选择和参数配置。然后深入探讨了SVPWM算法的具体实现,涵盖扇区判断、矢量合成、作用时间计算以及开关状态选择等关键技术点。此外,还讨论了电容电压平衡控制、死区时间和载波生成等重要细节。最后,通过FFT分析验证了系统的性能,展示了良好的波形质量和低谐波失真率。 适用人群:电力电子工程师、自动化专业学生、从事逆变器研究的技术人员。 使用场景及目标:适用于希望深入了解三电平逆变器SVPWM控制原理的研究人员和技术开发者。目标是掌握如何利用MATLAB进行高效、精确的逆变器仿真建模,优化波形质量,减少谐波失真。 其他说明:文中提供了大量实用的MATLAB代码片段,帮助读者更好地理解和实践相关理论。同时提醒了一些常见的仿真陷阱,如求解器选择不当可能导致的问题。强调了动手实践的重要性,鼓励读者自行搭建模型以加深理解。

    Delphi 12.3控件之nrCommLib Pro v9.54 Full Source for D12.7z

    Delphi 12.3控件之nrCommLib Pro v9.54 Full Source for D12.7z

    基于MATLAB的界面GUI指纹识别系统(高分项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载

    Notepad-v3.2.0 最新版(2025年3月27日)

    notepad–是一个国产跨平台、轻量级的文本编辑器,是替换notepad++的一种选择。其内置强大的代码对比功能,让你丢掉付费的beyond compare。

    Delphi 12.3控件之TMS MQTT v2.0.8.0.7z

    Delphi 12.3控件之TMS MQTT v2.0.8.0.7z

    数据科学领域中层次聚类算法的详细解析及其Python实现

    内容概要:本文全面介绍了层次聚类算法,一种无监督学习方法,广泛应用于数据挖掘、机器学习和模式识别。文章首先阐述了聚类算法的基础理论,特别是层次聚类的独特之处——生成树状图展示数据点之间的相似性关系。随后,详细讲解了凝聚型层次聚类的工作原理,包括初始化、合并和重复步骤,并探讨了多种距离度量方法(如单链、完全链、平均链和重心法)。文中通过Python代码实例展示了如何使用SciPy库进行层次聚类,并生成树状图。此外,文章还讨论了层次聚类在生物信息学、图像分割和文本数据分析中的具体应用场景,以及评估聚类质量的方法(如轮廓系数和Calinski-Harabasz指数)。最后,文章总结了层次聚类的优点和缺点,并展望了未来的优化方向和挑战。 适合人群:数据科学家、机器学习工程师、研究人员和其他对聚类算法感兴趣的从业者。 使用场景及目标:①理解层次聚类的基本原理和工作流程;②掌握如何使用Python实现层次聚类;③学会评估聚类质量和优化聚类性能;④了解层次聚类在不同领域的应用。 其他说明:本文不仅提供了理论知识,还包括丰富的代码示例,使读者能够在实践中加深对层次聚类的理解。同时,文章还探讨了层次聚类

    中国房地产经纪人生存状况及发展趋势分析-基于58安居客百万经纪人调研

    本文基于58安居客发布的《百万房地产经纪人生存报告》,详细分析了中国房地产经纪人的生存状况和发展趋势。报告显示,房地产经纪人呈现出年轻化、长期化的趋势,95后从业者超过三成,八成经纪人从业时长超过1年。从业人员性别分布以男性为主,但女性经纪人比例显著增加。学历水平逐年提升,大专及以上学历占比过半。获客渠道主要集中在网络端口和老客户介绍,疫情期间,VR技术和私域流量成为重要手段。多数经纪人收入受疫情影响减少,但仍对未来市场保持信心。此外,经纪人在工作地置业的比例较高,显示出较强的职业稳定性。 适用人群:房地产行业从业者、研究机构、政府相关部门、投资者。 使用场景及目标:帮助了解中国房地产经纪人的职业特点和发展趋势,为相关政策制定、企业管理及个人职业规划提供参考。 报告数据来源于58安居客房产研究院,涵盖2022年4月至5月期间的数据,反映了当时市场环境下经纪人的实际情况。

Global site tag (gtag.js) - Google Analytics