大數據

大數據

带你读《数据库与数据处理:Access 2010 实现 第2版》之三:关系数据库设计

点击查看第一章点击查看第二章 第3章 关系数据库设计 3.1 关系数据库设计过程 数据库设计是开发一个好的数据库应用系统的基础,它的基本任务是根据用户的需求,以及数据库的支撑环境(包括DBMS、操作系统和硬件),设计出数据模式(包括外模式、模式和内模式)以及典型的应用程序。在数据库的设计过程中,不同的人员会参与到数据库设计的不同阶段。比如,用户和数据库管理员主要参与需求分析和数据库的运行维护;应用开发人员在系统实施阶段参与进来,负责编制程序和准备软硬件环境;而系统分析人员、数据库设计人员可能需要自始至终地参与数据库设计。需要注意的是,在数据库设计过程中必须充分调动用户的积极性。另外,应用环境的改变、新技术的出现等都会导致应用需求的变化,因此设计人员在设计数据库时必须充分考虑系统的可扩充性,使设计灵活、易于修改。数据库设计是软件工程的一部分,主要包括6个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段、数据库运行和维护阶段。作为一种主流的数据库,关系数据库设计的目标是生成一组关系模式,使得既可以方便地获取信息,又不必存储不必要的冗余信息。关系数据库的设计过程同样也包括上述6个阶段,如图3-1所示,其核心是概念数据建模,将概念模型转为关系模型并进行规范化处理。具体来说就是将E-R图转换为关系模式,以及对关系模式进行规范化。比如,构造出来的关系模式是否适合所针对的具体问题,应该构造几个关系模式,每个关系模式由哪些属性构成等,这些都是关系数据库设计过程中要解决的核心问题。 3.2 需求分析 需求分析是整个设计阶段最困难、最耗时的阶段,它是在数据库建立的必要性和可行性分析研究的基础上进行的。通常的工作包括详细调查现实世界要处理的对象,如组织、部门、企业等,调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等。在该阶段需要准确了解、分析用户的需求,形成需求分析说明书。用户需求主要包括以下三方面: 1)信息需求,用户要从数据库获得的信息内容。 2)处理需求,即完成什么处理功能及处理方式。 3)安全性和完整性要求,在定义信息需求和处理需求的同时,必须要确定安全性要求、完整性约束条件等。需求分析的3个主要步骤是:需求信息的收集、分析整理和评审。评审是将需求分析结果再次提交给用户,获得用户的认可,以避免重大疏漏和错误。在了解用户需求后,要进一步描述和分析用户的需求,通常采用结构化分析(Structured Analysis,SA)方法自顶向下、逐层分解。SA方法的基本思想是“分解”和“抽象”。分解是指将大问题分解为若干个小问题,将系统的复杂性降低到可以掌握的程度,然后再逐一解决这些小问题。抽象是指分解可以分层进行,即先考虑问题最本质的属性,暂时略去细节,以后再逐层添加细节,直至涉及最具体的内容。SA的描述方法有分层的数据流图、数据字典、描述加工逻辑的结构化语言、判定表及判定树等。一般使用判定表或判定树来描述处理逻辑,使用数据字典来描述数据。数据流图(Data Flow Diagram,DFD)是常用的结构化分析工具之一,也是描述系统工作流程的一种图形表示法,主要用来描述系统的数据流向和对数据的处理功能。数据流图包括以下几个主要元素:1)带箭头的直线,表示数据流,是数据在系统内传播的路径。2)矩形框,表示数据来源或输出。 3)圆形或椭圆,表示对数据的加工处理。 4)非闭合矩形、单线或双线,表示需要存储的数据。画分层数据流图的方法是“先全局后局部,先整体后细节,先抽象后具体”。通常将这种分层的DFD分为顶层、中间层、底层。具体步骤如下:1)先确定系统范围,画出顶层的DFD。2)逐层分解顶层DFD,获得若干中间层DFD。3)画出底层的DFD。图3-2给出了一个教务管理系统中排课子系统的顶层数据流图的例子。 数据字典是对系统中数据的详细描述,是对数据流图的进一步补充,是下一步概要设计的必要输入。它用于对数据库数据描述的集中管理,并为DBA提供有关的报告。数据字典的内容主要有:数据项、数据结构、数据流、数据存储、加工处理过程。其中,数据项是最基本也是最重要的内容,所谓数据项就是不可再分的数据单位,如学号、课程号、成绩等。对数据项的描述主要包括:数据项名、含义说明、别名、类型、长度、取值范围、取值含义等。 3.3 概念结构设计 概念结构设计是整个数据库设计的关键阶段。通过对用户需求的综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。常用E-R模型来描述概念模型。在概念结构设计阶段,设计人员仅从用户角度看待数据及其处理要求和约束,并产生一个反映用户观点的概念模式。概念结构设计主要分为3个步骤:数据抽象,设计出局部概念模式;将局部概念模式合并成全局概念模式;最后进行评审,以确认该阶段的任务是否完成,有无疏漏和错误。设计概念结构通常有以下4类方法:1)自顶向下:首先定义全局概念结构的框架,然后逐步细化。2)自底向上:首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。3)逐步扩张:首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至形成总体概念结构。4)混合策略:将自顶向下和自底向上相结合,使用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略设计的各局部概念结构。通常采用自顶向下需求分析、自底向上设计概念结构。概念结构设计的特点如下:1)能真实、充分地反映现实世界中实体间的联系。2)概念模式是各种基本数据模型的共同基础,易于向关系、网状、层次等各种数据模型转换。3)设计复杂程度得到降低,便于数据的组织管理,也易于修改。4)概念模式不受特定DBMS的限制,也独立于存储安排,因而比逻辑设计得到的模式更为稳定。5)概念模式不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而能准确地反映用户的信息需求。 3.4 逻辑结构设计 逻辑结构设计阶段的主要工作是将概念模型转换为数据库的一种逻辑模式,即某种特定DBMS所支持的逻辑数据模式。如果采用基于E-R模型的数据库设计方法,该阶段的任务就是将概念结构设计阶段得到的E-R图,转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。通常,E-R模型向关系模型转换是数据库逻辑结构设计的主要步骤。数据库逻辑结构设计的关键是如何构造合适的数据模式。因此,关系数据库逻辑设计的主要任务就是按照规则,将概念设计阶段设计好的独立于具体的DBMS的概念模型,转换为RDBMS产品所支持的一组关系模式,并利用关系数据库理论对这组关系模式进行规范化设计和优化处理,从而得到满足所有数据要求的关系模型。图3-3给出了逻辑结构设计的主要步骤:首先将概念结构转换为一般数据模型;然后将一般数据模型转换为特定DBMS支持下的数据模型;最后对数据模型进行优化。所谓数据模型的优化,就是对得到的初步数据模型进行适当的修改,调整数据模型的结构,以进一步提高数据库应用系统的性能。目前的DBMS产品多是关系型的,对于关系数据库逻辑结构设计的主要步骤就是将E-R图转换为关系模式,然后利用规范化理论对这组关系模式进行修正和优化,相关内容将在第4章和第5章中介绍。 […]

大數據

带你读《GraphQL学习指南》之一:欢迎来到GraphQL的世界

点击查看第二章点击查看第三章GraphQL学习指南 [美] Eve PorcelloAlex Banks 著郭笑鹏 译机械工业出版社 第1章 欢迎来到GraphQL的世界在被英国女王册封为爵士前,蒂姆 “伯纳斯 “李(Tim Berners-Lee,英国计算机科学家,万维网之父)同你我一样也是一名程序员。他曾就职于CERN(European Organization for Nuclear Research,欧洲核子研究组织)位于瑞典的欧洲粒子物理实验室,与一大批才华横溢的研究人员共事。在工作生涯中,伯纳斯想要帮助同事们分享彼此的想法,因此他决定建立一个网络,通过它科学家们可以发布和更新最新的信息。这个项目最终发展成了第一个Web服务器和第一个Web客户端,并于1990年12月由CERN(https://www.w3.org/People/Berners-Lee/Longer.html )正式推出,这便是我们耳熟能详的“WorldWideWeb”(万维网)浏览器(后更名为“Nexus”)。通过这个项目,伯纳斯使研究人员们能够通过自己的电脑查看并更新网页内容。 “WorldWideWeb”由HTML、URL、浏览器以及一个所见即所得(WYSIWYG,What You See

大數據

带你读《GraphQL学习指南》之三:GraphQL查询语言

点击查看第一章点击查看第二章 第3章 GraphQL查询语言在距GraphQL开源45年前,一位名叫埃德加 “科德(Edgar M. Codd)的IBM程序员发表了一篇内容不多、名字却很长的论文—“A Relational Model of Data for Large Shared Databanks”。此文虽然标题平淡无奇,其中表达的思想却惊天动地。它概述了使用表格存储和操作数据的模型。此后不久,IBM开始开发可以使用结构化英文查询语言(Structured English Query Language,SEQUEL)进行查询的关系型数据库,这就是后来的SQL。SQL(Structured Query Language,结构化查询语言)是特定的语言,用于访问、管理和操作数据库中的数据。SQL引入了使用单个命令访问多个记录的概念。它还可以使用任意键(key)来访问记录,而不仅局限于ID。SQL可以运行的命令非常精简:SELECT、INSERT、UPDATE和DELETE。这就是你对数据所能做的一切。使用SQL,可以编写一个查询语句,它可以跨数据库中的多个数据表返回相应的数据。数据只能被增加、删除、更改和查询的想法确实符合表述性状态传递方式,它要求我们根据这四种基本数据操作使用不同的HTTP方法:GET、POST、PUT和DELETE。但是,指定通过REST读取或更改数据类型的唯一方法是通过端点URL,而非实际的查询语言。最初我们开发GraphQL的想法是用于查询数据库并将其应用于互联网。单次的GraphQL查询就可以返回相关联的数据。与SQL一样,你可以使用GraphQL查询来更改或删除数据。毕竟,SQL中的QL和GraphQL中的QL代表了相同的东西:查询语言(Query Language)。尽管都是查询语言,但GraphQL和SQL却完全不同。它们适用于完全不同的环境。我们将SQL查询语句发到数据库,而GraphQL查询语句则发到API。SQL数据存储在数据表中。GraphQL数据则可以存储在任何地方:单个数据库、多个数据库、文件系统、RESTful

大數據

带你读《传感器系统:基础及应用》之一:工程中的传感器系统

国外电子与电气工程技术丛书点击查看第二章点击查看第三章传感器系统:基础及应用Sensor Systems: Fundamentals and Applications [加] 克拉伦斯·W.德席尔瓦(Clarence W. de Silva) 著詹惠琴 崔志斌 彭杰纲 古 军 译 第1章 工程中的传感器系统   本章主要内容●传感器和传感器系统的作用●估计在传感中的重要性●创新的传感器技术●工程应用场景●人类感官系统●机电一体化工程中的传感器●控制系统中的传感●仪表化的过程●应用实例●本书的组织结构 1.1 传感器和传感器系统的作用 传感器传感器(例如,半导体应变片、转速计、RTD温度传感器、照相机、压电加速度计)被用来测量(即感测)工程系统及其环境中的未知信号和参数。本质上,传感器是用于监视和“学习”某个系统以及其与周围环境可能的相互作用的。这些知识不仅在操作和控制系统方面有用,并且对于其他目的也是有用的,比如:1.过程监控2.实验建模(即模型识别)3.产品测试和认证4.产品质量评估5.故障预测、检测和诊断6.报告/警告的生成7.监视传感器的常见应用是在汽车中,如图1-1所示,在动力总成、驾驶辅助、安全性和舒适度等系统中使用了大量各式各样的传感器。这里给出了商用传感器的一些示例。 ●运动传感器:电位计、线性可变差动变压器(LVDT)、磁致伸缩位移传感器,磁感应接近传感器、转速计、旋转变压器、同步器、陀螺仪、压电加速度计、激光测距仪、超声波测距仪。●力/转矩传感器:半导体应变片和电动机电流传感器。●流体流量计:科里奥利流量计、皮托管、转子流量计和孔板流量计。●压力传感器:压力计、波登管和隔膜类型的传感器。●温度传感器:热电偶、热敏电阻和电阻温度探测器(RTD)。传感器系统“传感器系统”可能意味着:1.多传感器系统,包括传感器网络和传感器/数据融合(当一个传感器可能不适合特定应用时)。2.在实际应用(例如,信号处理、数据采集、数据传输/通信)中需要的传感器及其附件。本章将介绍这两类传感器系统的几个例子,并在后续章节做进一步研究。本书涉及单个传感器和传感器系统,将介绍它们的物理原理和操作原理、等级和性能规格、选型和集成到工程系统中时必要的软硬件、信号处理和数据分析、参数估计和决策,以及与传感器和传感器系统相关的实际应用。控制系统中的使用传感器和传感器系统在控制系统中是不可或缺的。控制系统是一个包含控制器且将其作为一个完整部分的动态系统。控制器的目的是产生控制信号,该控制信号将利用各种控制装置以期望方式(即根据性能规格,见第5章)来驱动控制的过程(或设备)。尤其是在反馈控制系统中,控制信号是根据感测到的设备响应信号产生的。反馈控制系统中的传感器和其他主要组件如图1-2所示。 1.1.1 传感过程中估计的重要性 来自传感器的测量可能不能提供所需参数或变量的真实值,主要有两个原因:1.所需的量不是可以直接测量的,必须通过使用合适的“模型”,利用测量值计算所得。2.传感器(甚至传感过程)并不完美,将会引入“测量误差”。因此,传感过程可能被视为估计问题(见第7章),使用测量数据“估计”被测量的真实值。“模型误差”和“测量误差”这两大类误差将会进入估计过程,并影响结果的准确性。模型误差源于感兴趣的量与被测量(或系统模型)之间的关系。未知的(和随机的)输入干扰也可以在模型误差中进行处理。测量误差来源于传感器和感测过程(例如,如何安装传感器以及如何收集、传送和记录数据)。很明显,参数和信号的估计是感测的重要步骤。有许多方法可用于估计。其中一些会在本书中进行介绍(例如,最小二乘法、最大似然法、卡尔曼滤波器、扩展卡尔曼滤波器、无迹卡尔曼滤波器;参见第7章)。 1.1.2 创新的传感器技术 除了传统的传感器,还有很多创新型和高级传感器(见第10~12章),其中有几种类型的传感器如下所示:1.微型和嵌入式传感器,它们基于集成电路(IC)技术和微机电系统(MEMS)技术,集成信号处理、控制和其他硬件;传感器可能与系统组件进行集成。2.智能传感器,它内置信息预处理、推理、论证以提供基于高级知识的决策;多传感器融合可以提供更可靠和准确的结果。3.网络传感器,多个传感器节点(SN)在分布式传感设备中相互通信;节点之间可能存在显著的地理上的分离;传感器节点连接可能是有线或无线的;通常传感器节点包含一个或多个传感器、微控制器和信号调理硬件。4.分级检测架构(低级感应信息被预处理以满足更高级别的要求),如在分级控制中,每个控制层由相应的传感器层提供服务。 1.2 应用场景 传感器和换能器对于采集监控系统的输出信号(过程响应)来说是必要的,包括:故障预测、检测和诊断;产生警告和建议;反馈控制;监控和对实验建模(系统识别)输入信号的检测;还有前馈控制以及各种其他目的。由于在动态系统中存在许多不同类型和电平的信号,所以信号修整(包括信号调理和信号转换;参见第3章和第4章)是与传感相关的重要功能。特别地,信号修整是组件接口中的重要考虑因素,很明显,有关系统仪表的主题应该能处理传感器、换能器、信号修整和部件互连之间的关系。特别地,该主题应涉及类型、功能、操作和交互等必要系统组件的识别,以及为了适应各种应用而对组件选型和接口进行的设计。参数选择(包括组件尺寸和系统调优)也是很重要的。设计是系统仪表的必要部分,因为设计使我们能够构建一个满足性能要求的系统——也许要通过几个基本组件,如传感器、执行器、控制器、补偿器和信号修整装置。工程师特别是机电工程师应该能够识别或选择组件,尤其是系统中的传感器、执行器、控制器和接口硬件,从而建模和分析各个组件以及整个集成系统,并为组件选择合适的参数值(即组件尺寸和系统调优),以便系统根据某些规格执行预期功能。仪器(传感器、执行器、信号采集和修正器、控制器和附件以及它们在过程中的集成)适用于工程部门。通常,仪器适用于过程监控、测试以及故障预测、检测和诊断,并在几乎每个工程系统中进行控制。工程部门和典型的应用场合如下所示:●航空航天工程:飞机和航天器。●土木工程:土木工程结构(桥梁、建筑物等)的监测。●化学工程:化学工艺和植物的监测与控制。●电子和计算机工程:开发电子和计算机集成设备、硬盘驱动器等,传感器嵌入式系统以及电子和计算机系统的控制和监控。●材料工程:材料合成工艺和材料试验。●机械工程:车辆和运输系统、机器人、生产线、工厂、发电系统、喷气式发动机、石油和天然气开采的运输和精炼。●采矿与矿产工程:采矿机械、工艺及原料的加工。●核工程:核反应堆的监测和控制以及组件的测试和鉴定。我们已经将汽车强调为传感器和传感器系统的重要应用场景。表1-1中列出了几种传感器的使用。这里只列出了一些重要的应用领域。

大數據

带你读《传感器系统:基础及应用》之二:组件互连

点击查看第一章点击查看第三章 第2章  组件互连  本章主要内容●组件互连简介●组件互连中的阻抗匹配●阻抗匹配的方法●最大功率传输●最高效率的功率传输●信号传输中的反射预防●负载效应的降低●机械系统中的阻抗匹配 2.1 引言 工程系统通常由各种互连的组件构成以实现预期的功能。当两个组件互连时,信号(和能量)将在它们之间流动,并且当两个组件相互作用(即动态耦合)时,它们之间的信号(响应)将随着时间而变化,这取决于两个组件的动态特性。当两个设备互连时,必须保证由改变系统动态条件所引起的变化不会产生不可接受的性能。很显然,对于工程系统的仪器仪表来说,考虑连接组件之间的组件互连和接口设计是十分重要的。 2.1.1 组件互连概述 工程系统通常是多域(混合)系统,由多种类型的组件互连组成。机电一体化系统尤其如此,该系统在设计和开发过程中采用了集成的并行最优化设计方法。通常,将机械(包括流体和热)、电气、电子和计算机硬件集成起来构成实际应用。当组件互连时,由于集成系统中各个组件的运行状态可能与每个组件独立运行时的状态有显著的不同,因此,组件互连是工程系统的设计和仪表化(和整体开发)过程中需要重点考虑的因素。互连组件接口处的信号性质和类型取决于组件的性质和类型。比如,当电动机通过齿轮(变速器)单元与负载耦合时,机械能在这些组件的接口处流动。在这种情况下,传输的能量是相同形式的(机械的),并且我们会特别关注角速度和转矩的相关信号。类似地,当电动机连接到其电子驱动系统(例如,电子驱动电路根据电动机的类型不同连接到定子、转子或两者都有的直流电动机上)时,将驱动电路的电能转换成转子的机械能。它们的接口可以由机电变压器表示,如图2-1所示。一方面,我们将电压和电流转化为功率信号,另一方面,我们将角速度和转矩转化为功率信号。注意:在这两个例子中,双方都会有能量损失(浪费),因此能量转换的效率不会是100%。 通常,当两个组件互连时,它们之间将发生动态交互(动态耦合)。因此,当前任意组件的状态将与连接之前不同。很明显,为了使系统可以以期望的方式运行,相互连接的组件应该合理匹配。例如,由于在电动机及其电子驱动系统这个例子中,效率最大化是其追求的主要目标,所以,两个组件之间的动态交互将是非常重要的。相比之下,对于传感器和被测对象,重要的是传感器不会改变被测对象的动态条件(即传感器对被测对象的负载可以忽略不计。例如,对于运动传感器,电力负载和机械负载均应忽略不计)。换句话说,在保证传感器准确测量所需量时,传感器和被测对象之间的动态交互应该是可忽略不计的。组件接口在互连系统的正常运行中起着很重要的作用。特别是接口必须根据互连系统的具体功能进行设计、开发或选择。在多组件系统中为了提高系统的性能和准确性,应仔细进行组件匹配。在这种情况下,基于系统的功能目标,对阻抗的考虑是十分重要的,因为为了实现互连系统的最佳性能,对阻抗进行匹配是很有必要的。以下是与组件互连有关的注意事项:1.互连组件的特征,例如,组件领域(机械、电气/电子、热),组件类型(执行器、传感器、驱动电路、控制器、安装或外壳)。2.互连系统的目的(例如,驱动负载、测量信号、传递信息、最小化噪声和干扰——特别是机械冲击和振动)。3.系统运行时信号/功率的电平/能级。 2.1.2 本章内容 本章介绍工程系统中如传感器、数据采集(DAQ)硬件、信号调理电路、执行器、能量转换装置和安装机械结构等组件互连,研究阻抗和组件匹配的基本概念。基于某些目的和应用,讨论互连组件的期望阻抗特性,提出阻抗匹配的几种方法,并给出其应用。最后解决电气和机械装置中的阻抗匹配问题。附录D概述了多组分系统的可靠性和相关的概率模型。在某些情况下,这里提出的讨论和研究可能还很笼统。然而,这里介绍的概念适用于工程系统(多域)中许多类型的组件。 2.2 阻抗 2.2.1 阻抗的定义 在传统电学意义上阻抗可以被解释为“广义电阻”。阻抗也可以在机械或者其他领域(例如,流体、热)进行解释,这取决于所涉及信号的类型。例如,电压表可以改变电路中的电流(和电压),并且考虑交流电路时,这涉及更一般的电阻抗。考虑直流电路时,它表示电阻。再举另一个例子,较重的加速度计将引入额外的动力学(机械)负载,其将改变监测位置处的实际加速度,这涉及机械阻抗。第三个例子是,热电偶的结点可以改变热传递到结点中的被测量的温度,这涉及热阻抗。类似地,我们可以定义流体系统、磁系统(磁阻)的阻抗等。一般来说,阻抗定义为:跨接变量在组件两端(端口)之间进行测量,通过变量是通过组件而不发生改变的量。跨接变量有电压、速度、温度和压力。通过变量有电流、力、热传递速率和流体流速。电阻抗定义为电压/电流,这与式(2-1)一致。机械阻抗历来都定义为力/速度,这是式(2-1)的倒数。在我们的分析中,定义为速度/力的导纳是一般意义上的阻抗(即广义阻抗)。 2.2.2 在组件互连中阻抗匹配的重要性 当两个电气组件互连时,电流(和能量)在两个组件之间流动并改变初始(未连接时的)条件。这称为(电)负载效应,这种效应必须最小化。在实际情况下,信号通信、调理、显示等需要足够的能量和电流才能进行。仪器的这种要求可以通过组件阻抗的适当匹配来实现。一般来说,当传感器、换能器、电源、控制硬件、数据采集(DAQ)板、过程(即设备)装备、信号调理硬件和电缆等组件互连时,必须在每个接口处正确地匹配阻抗以实现它们的额定性能水平。这种匹配应该根据互连系统的目标进行。以下给出了几类阻抗匹配:1.用于最大功率传输的电源和负载匹配:在驱动系统中,最重要的目标是使从电源传递到执行器或负载的功率最大化。在这种情况下,互连组件之间的动态交互将变得十分重要。合适的阻抗匹配可以实现最大功率传输要求。2.用于效率最高的功率传输:在功率传输中实现最高效率不同于实现最大功率,因为在最大功率传输中不能实现最高效率。可以适当选择负载阻抗以实现高效率。3.信号传输中的反射预防:当两个组件通过具有特性阻抗(例如,50Ω或75Ω的同轴电缆)的电缆(如同轴电缆)进行连接时,由于电缆两端的阻抗差异(来源于所连接组件的阻抗),将会有信号反射(类似于由两个介质的密度差异而形成的弹性波反射)。反射信号(回波)将会有额外的功率消耗,导致信号强度下降和信号失真,所有这些都是不希望出现的。必须匹配电缆的端部阻抗和特性阻抗才能避免信号反射。4.负载效应的降低:在某些应用中,当两个组件互连时,要求输出组件不加载输入组件。例如,在传感过程中,传感器不应该改变被测对象的状态。换句话说,测量仪器不应扭曲被测量的信号。很简单,即传感器不应该“加载”被测对象。另一示例是,在传感器的信号采集系统中,信号采集硬件不应该扭曲从传感器处获得的信号(即可能具有滤波和放大功能的信号采集系统不应该加载这个传感器)。第三个例子是,在稳压电源中连接到电源的负载不应该显著改变电源的输出电压。可以通过选择阻抗来减小负载效应。在这种情况下,阻抗匹配称为阻抗桥或电压桥。需要阻抗变换器才能实现适当的阻抗匹配以减小负载效应。不合适阻抗的一个不利影响是输出信号电平不足,这将会使信号处理和传输、组件驱动和组件或设备的最终控制驱动等功能变差。在传感器换能器技术中,应该注意的是,许多类型的换能器(例如,压电加速度计、阻抗探头和传声器)具有高达1000MΩ(兆欧姆,1MΩ=1×106Ω)的输出阻抗。这些设备产生较低的输出信号,它们需要调理才能提高信号电平。使用具有高输入阻抗和低输出阻抗(几欧姆)的阻抗匹配放大器(或阻抗变换器)或阻抗桥装置就是为了这个目的(例如,电荷放大器与压电传感器结合使用)。具有高输入阻抗的装置还有一个优点是,对于给定的输入电压,特别是和与其连接的输入装置相比,消耗更少的功率(即v2/R比较低),此外,功率传输也将以更高的效率进行。具有低输入阻抗的输出装置从输入装置获取高电平的现象也可以解释为输入装置出现了负载误差。在这种情况下,两个互连设备(输入设备和输出设备)之间将存在显著的动态交互。 2.3 阻抗匹配的方法 在仪表化的过程中,组件互连是为了达到某些特定目的而进行的。连接组件的阻抗应该匹配,以提高系统在这些功能目标(目标)方面的性能。我们现在考虑一下阻抗匹配的目标:●从电源到负载实现最大功率传输●在效率最高时实现功率传输●信号传输中的反射预防●减小负载效应 2.3.1 最大功率传输 一些应用的目的是从电源处获取最大功率。电源内部阻抗Zs必须与负载阻抗Zl相匹配,以便最大化负载功率。如果互连系统中有除了电源和负载之外的其他组件,那么我们可以简单地使用相同的方法将其作为电源阻抗,即不包括负载的戴维南电路等效阻抗。首先可以通过使用纯电阻(DC)示例来展现该方法。例2.1假设直流电源电压为vs,内部(输出)阻抗(电阻)为Rs。它为负载或电阻Rl供电,如图2-2所示。如果这个电路的目标是最大化负载所吸收的功率,那么Rs和Rl之间的关系应该是什么? 解:通过电路的电流为因此,负载上的电压是:负载吸收的功率为:为了获得最大功率,需要将式(i)的右边表达式对Rl求导,并使结果等于0,以满足式(ii)。这就得出了对最大功率的要求:Rl=Rs因此,最大功率传输要求是负载电阻必须等于电源端电阻。从例2.1中获得的结果可以容易地扩展到一般情况,既有电阻又有电抗(电抗由电感和电容引起)的交流电路。这种情况如图2-3所示,其中vs是电源电压,Zs是电源阻抗,Zl是负载阻抗。如果有电源和负载之外的组件,那么它们可以集成到电源中。因此Zl代表那些组件(不包括负载)的等效戴维南阻抗。如果这些组件也有源,则vs表示戴维南等效电路的等效电源电压。

大數據

带你读《Python金融大数据挖掘与分析全流程详解》之一:Python基础

Python金融大数据挖掘与分析全流程详解点击查看第二章点击查看第三章王宇韬 房宇亮 肖金鑫 编著 第1章 Python基础 千里之行,始于足下。在利用Python开发各种精彩的项目前,我们需要对Python的基础知识有一个基本的了解。基础知识看似简单,却是各种复杂代码的基石,只有将基础打扎实,在之后的进阶学习中才能更加游刃有余。 1.1 Python安装与第一个Python程序 本节首先介绍Python的安装,然后带领大家编写第一个Python程序,以此打开Python编程的大门。同时还将介绍PyCharm编译器的安装及使用注意事项。 1.1.1 安装Python 学习Python的第一步是什么?自然是安装Python了。这里介绍一种非常方便的安装方法—Anaconda安装。Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且里面还集成了很多关于Python科学计算的第三方库。在浏览器中打开Anaconda的官网下载地址:https://www.anaconda.com/download/,或者在搜索引擎中搜索Anaconda,进入官网,根据当前操作系统配置选择相应的版本下载即可。这里选择Windows系统的Python 3.7版本,如下图所示,默认版本是64位的。如果操作系统是32位的,那么选择32位的版本下载即可。双击下载好的安装文件,进入安装界面。建议不要改变默认安装路径(防止可能出现的安装问题),然后在弹出的界面中单击多次“Next”按钮。安装到如下图所示的界面时,注意一定要勾选第一个复选框,其作用相当于自动配置好环境变量,对初学者来说比较方便。如果弹出的界面中询问是否安装Microsoft VSCode(Install Microsoft VSCode),单击“Skip”按钮跳过即可。最后单击“Finish”按钮,完成安装。 1.1.2 编写第一个Python程序 安装完Python,大家是不是有点跃跃欲试了呢?下面就来编写第一个Python程序。安装Anaconda的同时就已经安装了一些不错的IDE(指集成开发环境,也就是用于编写及运行代码的应用程序),如Spyder、Jupyter Notebook。后面会介绍另一款IDE软件—PyCharm。这里先使用Spyder编写程序。在“开始”菜单中找到并展开Anaconda的程序组,单击其中的Spyder即可运行该程序。打开Spyder后,界面如下图所示。左边框内是输入代码的地方,右边框内是输出代码运行结果的地方,上方的绿色箭头是运行代码的按钮,在Spyder中,也可以按F5键运行代码。将输入法切换到英文输入模式,在左边输入代码的地方输入: print(‘hello world’)

大數據

带你读《好设计,有方法:我们在搜狐做产品体验设计》之一:以用户为中心的设计

UI/UE系列丛书点击查看第二章点击查看第三章好设计,有方法:我们在搜狐做产品体验设计 李伟巍 等著 第1章 以用户为中心的设计 ◎李伟巍本章将主要讲述我们应该如何了解用户,开篇以用户需求的层级作为出发点,讲解了如何为用户量体裁衣。通过产品迭代的方法找到精准的用户画像,然后有针对性地采用正确方法对不同用户做差异化引导。伴随着产品不断发展,用户也在不断成长,他们的需求也在不断变化,产品如果跟不上这些变化,结果可能就会被用户淘汰。在本章的最后,还分享了笔者团队在一次做线下调研过程中所收获的丰硕成果。 1.1 用户需求的三个层级 做任何产品都要以用户的实际需求为导向。用户的特定需求真实存在,产品经理通过一些方法从用户那里验证并获取需求,将其转换为产品需求,再通过不断评审和讨论,辗转到交互设计师和视觉设计师手上,最终经过开发工程师开发上线,这时候用户的需求才算是真正落地。在用户需求向产品需求转变的过程中,虽然产品经理是主要的参与者,但也只能算是需求转换的实施者,而不是塑造者,所以我们说“需求”不是产品经理“意淫”出来的,而是来源于用户的真实需求,用户的需求才是设计的原动力。要准确把握用户需求,首先应该了解用户需求层级的定义和划分。根据用户需求的迫切程度可以将需求划分为三个层级:痛点型需求、痒点型需求、兴奋点型需求。 1.1.1 第一层级:痛点型需求 所谓痛点,就是用户在日常生活中遇到的需要及时解决的棘手问题,具有强烈的紧迫感,如果不解决,就会浑身不自在,而且很痛苦。产品只有帮助用户解决了痛点,才算是解决了用户的刚需。我们来看一些实例。如早晚上下班高峰,乘客着急赶飞机、火车,在路上半天打不到车,在寒风中冻得瑟瑟发抖,打不到车就可能赶不上行程。这种场景下,打不到车变成了乘客的痛点,使用滴滴出行叫车,几秒钟以后就有专车来接你,还可以在应用上提前预约好时间,等专车到达后再出门。滴滴出行解决了乘客打不到车的痛点。如逢年过节购买车票,火车站和售票点外面彻夜有人排队,所以逢年过节买不到火车票,就变成了乘客的痛点。自从铁路12306客户端产品上线以来,采用实名制在线购票的方式,使乘客可以轻松应对购票难题。12306解决了乘客买票难的痛点。经过打车和购票的案例分析,我们总结出痛点型需求的一些共性。迫切性:用户的问题亟待解决。阻碍大:用户获取刚需的过程中,存在很大的阻力,可能需要付出很大的代价。被困扰:用户无法达到目标,身心备受煎熬,感觉极度不爽。 1.1.2 第二层级:痒点型需求 痛点是非解决不可的,痒点就不一定需要。痒点就是用户期望想要做的事情,或期望想要达到的某种目标,但未必一定会实现,属于非必须要解决的需求。我们来看一些实例。如出门购物,买一件衣服可能要跑很多家商场才能挑选好,这时人早已经累得精疲力尽了。购买不同的东西,还要辗转不同的地方,路上就浪费了太多时间。足不出户就能轻松购物,还能满足购物的欲望,这就是用户的痒点。打开淘宝、京东,随时任性挑选,直接在线下单,还包邮送到家。淘宝、京东解决了用户方便购物的痒点。如女孩子每个月都被不期而遇的大姨妈折腾,算不清安全期、危险期的时间,不了解自己身体的健康状况,也不好意思问别人。女孩子期望不用跟别人交流就可以知道这些信息,还能满足了解私密的欲望,这就变成了女孩子的痒点。大姨妈、美柚等应用,不仅可以一键获取这些秘密,还可以监测自己的健康情况。大姨妈、美柚这些应用满足了女孩子的痒点。经过购物和女孩子的案例分析,我们总结出痒点型需求的一些共性。期望性:用户想要做的事情,想要拥有的东西。非必须:解决了更好,不解决照常生活,影响不大。满意度:痒点好比满足温饱奔小康,会增加用户的满意度。 1.1.3 第三层级:兴奋点型需求 痛点是非解决不可,痒点不是必须要解决的,那兴奋点呢?从字面理解好像就是让人产生浓厚的兴趣,其实兴奋点就是用户意外收获了未知的期待。痒点实现了用户期望,兴奋点在解决用户痒点的基础上还超出了用户的预期,使得用户流露出意外的亢奋,就连大脑中的多巴胺也跟着跳动起来,打动人心。让我们来看一些实例。如我们经常会遇到浏览器半天打不开网页的场景,内心期望有一款浏览器可以解决这样的问题,满足自己畅游互联网的欲望,这其实算是用户的痒点。QQ浏览器不仅解决了用户的痒点,而且界面简洁、侧边栏功能丰富、占用资源极少、运行起来超级流畅,最后还自动屏蔽了广告,在解决用户的痒点之余,还超预期地解决了用户的兴奋点。如通过社交应用聊天时,很多人喜欢使用语音聊天,因为打字不方便。但语音也有弊端,公共场合听不见,开会时不适合听,而且不好传播,面向对象也比较单一。所以语音转文字就成了用户期望解决的一个痒点。讯飞输入法可以在用户说话的瞬间将语音转换成文字,实时解决用户痒点。而且讯飞的语音转文字功能,不仅能转标准的普通话,还可以转粤语、四川话、河南话等各地方言;同时支持中译英、英译中、中译韩、中译日等国人最常用的外语语种。讯飞语音识别的准确率居然可以达到98%。这些点完全超出了用户的预期,用完之后无不为之感叹,讯飞语音转文字的细节功能解决了用户的兴奋点。经过QQ浏览器和讯飞输入法的案例分析,我们总结出兴奋点需求的一些共性。超预期:超出用户的预期,意外收获到的未知。情感化:用户被其感染,内心被打动,甚至可能会流露出惊讶爱慕的情感。 1.1.4 用户需求的层次 上文对用户需求的三个层级进行了说明和分析,三者呈现出了对产品要求的递进关系。我们用一个综合的事例说明。如出门在外分不清方向,不知道身在何方,可能已经身处险境,都浑然不知。迫切需要解决,属于痛点型需求。找不到目的地,不停地向附近的人问路,用户通过问路也可以到达目的地,但费时费力,期望有人能直接指条明道,这就变成了痒点型需求。现在的导航应用,打开就可以准确定位,周边的信息也一览无余,痛点就不复存在了。用导航规划好目的地路线,直接到达,痒点需求是不是也就解决了。导航在每个违章拍摄点及时提醒、路况信息实时播报、分叉路口3D全景呈现、智能切换白天/黑夜模式、走错路智能重新规划路线、沿途景点和美食语音实时查询等这些功能是不是都解决了用户的兴奋点型需求?这么多智能化的功能让用户收获到意想不到的惊喜,真是随时都可以来一场说走就走的旅行。用户需求层次在递进升级,但同一个产品却可以同时解决痛点、痒点和兴奋点的多层次需求。从需求来映射产品,可以清晰地看到,用户需求的变化带来产品需求的不断升级,用户的痛点、痒点、兴奋点对应到产品的需求中,依次可以诠释为用户的基本需求、附加需求、超预期需求,且需求是不断递进升级的。 美国心理学家亚伯拉罕·马斯洛在1943年出版的《人类激励理论》中提出了人类需求从低到高的五个层次:生理需求、安全需求、社交需求、尊重需求和自我实现需求。我们可以把用户需求的三个层次和马斯洛的五个层次关联起来。 基本需求就如同生理、安全方面的生存需求,只有先生存下来才能去考虑其他的; 附加需求就如同社会、自主方面的归属需求,这些需求使人们可以生活得更好; 超预期需求就到了自我实现阶段,追求的是一种精神层面的需求。用户自身所处的阶段在提升,伴随着自身的需求也在发生变化,不断提升。 1.2 如何为用户量体裁衣?

大數據

带你读《Python金融大数据挖掘与分析全流程详解》之二:金融数据挖掘之爬虫技术基础

点击查看第一章点击查看第三章 第2章 金融数据挖掘之爬虫技术基础 “工欲善其事,必先利其器。”在进行金融数据挖掘项目实战之前,先来学习数据挖掘的一个技术手段—爬虫技术。爬虫技术其实就是利用计算机程序模拟人来访问网页,同时将网页上的数据获取下来,为数据的进一步分析做准备。 2.1 爬虫技术基础1—网页结构基础 想要从网页上挖掘数据,首先得对网页结构有一些基本的了解。本节会由浅入深地为大家揭开日常访问的网页背后的知识点。 2.1.1 查看网页源代码—F12键 学习网络爬虫技术首先得有一个浏览器,这里推荐谷歌浏览器(官网下载地址为https://www.google.cn/chrome/)。当然用其他浏览器也可以,如火狐浏览器等,只要按F12键(有的计算机要同时按住左下角的Fn键)能弹出网页源代码即可。下面以谷歌浏览器为例来演示F12键的强大作用。在谷歌浏览器中使用百度搜索“阿里巴巴”,然后按F12键,在网页下方弹出如下图所示的界面。按F12键后弹出来的界面称为开发者工具,是进行网络数据挖掘的利器。对于爬虫技术来说,只需要会用下图所示的两个功能即可。第一个是“选择”按钮,第二个是“Elements(元素)”选项卡。1.“选择”按钮单击“选择”按钮,会发现按钮变成蓝色,然后在上方的网页中移动鼠标,鼠标指针所指向的网页元素的颜色会发生变化,“Elements”选项卡里的内容也会随之改变。例如,指向搜索到的第一个链接的标题,显示效果如下图所示。当“选择”按钮处于蓝色状态时,在上方的网页中单击第一个链接的标题,这时“选择”按钮变回灰色,而“Elements”选项卡里的内容也不再变动,我们就可以开始观察单击的标题对应的网页源代码的具体内容了。我们一般只关心里面的中文内容,如果没看到中文文本,单击下图所示的三角箭头,即可展开内容,看到中文文本。2.“Elements”选项卡“Elements”选项卡里面的内容可以理解为就是网页的源代码,最后爬虫爬到的内容大致就是这样。下面接着完成一些“神奇”的操作。如下图所示,双击“阿里巴巴”文本,这几个字会变成可编辑状态。把“阿里巴巴”改成“工作”,然后同样双击下面一行的“批发网站_上”文本,使它变成可编辑状态,删除其中的“批发网站”,可以看到上方网页中的链接标题也相应地改变,如下图所示。还可以用同样的操作,修改页面上的其他信息,如股价等。通过开发者工具,我们可以对网页的结构有一个初步的认识,并利用“选择”按钮和“Elements”选项卡观察我们想获取的内容在源代码中的文本格式及所在位置。 2.1.2 查看网页源代码—右键菜单 在网页上右击,然后在弹出的快捷菜单中选择“查看网页源代码”命令,如右图所示,也会弹出一个当前网页的源代码页面,该页面上的信息就是通过Python能爬取到的信息。利用鼠标滚轮上下滚动源代码页面,能看到很多内容。实战中常将上述两种方法联合使用:通过F12键对网页结构进行初步了解,然后在网页上右击并选择“查看网页源代码”命令,查看所需内容在网页源代码的位置,或者通过快捷键Ctrl+F搜索需要的内容。有时通过F12键能看到的内容,但是通过右键菜单查看网页源代码的方法却观察不到,这是因为有些网页是动态渲染出来的。例如,新浪财经的股票信息是动态变化的,股价内容自然不会固定地写在网页源代码中,通过F12键看到的代码则是经过渲染的,内容更加丰富和全面,而通过右键菜单获得的内容可能就是一个网页框架,没有具体的数据。因此,如果通过F12键看到的和通过右键菜单看到的内容不一样,可以参考本书8.2节中Selenium库的相关知识点获取F12键渲染过的内容。 2.1.3 网址构成及http与https协议 许多人理解的网址是“www.baidu.com”,但其实应该是“https://www.baidu.com”,它前面的“https://”称为https协议,是网址的固定构成形式,表明该网址某种程度上是安全的,有的网址前面则为“http://”。在Python里输入“www.baidu.com”是识别不了的,必须把“https://”加上才可识别,演示代码如下:那么到底应该加“http://”还是“https://”呢?其实最简单的判断方法就是在浏览器中直接访问该网址,成功打开页面后,复制地址栏中的网址到Python代码中即可。 2.1.4 网页结构初步了解 网页源代码初看非常复杂,但了解网页基本结构后再看网页源代码会轻松很多,所以下面先对网页结构做初步了解。如下图所示,其结构很简单,就是一个大框套着一个中框,一个中框再套着一个小框,这样一层层嵌套。在网页源代码中这种层级关系通过缩进表现得很清晰。上图中,如果在一行网页源代码前看到一个三角箭头,就表明它是个大框,里面还嵌套着其他框,单击箭头就可以展开,看到里面嵌套的其他框。文本内容一般都在最小的框里。 2.2 爬虫技术基础2—网页结构进阶 本节来进一步了解网页结构,并试着自己搭建一个网页,为之后学习网络数据挖掘做准备。对于其中的代码了解即可,感兴趣的读者可以自己实践一下,对之后的学习会更有帮助。 2.2.1 HTML基础知识1—我的第一个网页 代码文件:2.2.1 我的第一个网页.htmlHTML(HyperText Markup

大數據

带你读《Java程序设计与计算思维》之二:认识数据处理与表达式

点击查看第一章点击查看第三章 第2章 认识数据处理与表达式 计算机主要的特点之一就是具有强大的计算能力,能把从外界得到的数据输入计算机,并通过程序来进行运算,最后输出所要的结果。下面我们从数据处理的角度来认识Java。Java中任何数据处理的结果都是由表达式来完成的。通过不同的操作数与运算符的组合就可以得到程序设计者所要的结果。在本章中,我们将认识变量与常数的使用以及Java语言中常见的基本数据类型,其中的数据类型代表变量使用内存空间的大小,而变量用于存放程序执行时的数据(如图2-1所示)。同时,我们还会示范如何进行各种数据类型之间的转换。 本章的学习目标 变量与常数的使用 基本数据类型 自动数据类型转换 基本输入与输出 强制类型转换 2.1 数据类型介绍 当程序执行时,外界的数据进入计算机后,当然要有一个“栖身”之处,这时系统就会分配一个内存空间给这份数据。而在程序代码中,我们所定义的变量(Variable)与常数(Constant)的主要用途就是存储数据,并用于程序中的各种计算与处理。Java语言是一种强类型(Strongly Type)语言,意思是指:“变量在使用之前,必须声明其数据类型,我们可以任意存取这个变量的值,但是变量所声明的数据类型在程序中不可以随意变更。”Java的数据类型可以分成“基本(Primitive)数据类型”与“引用(Reference)数据类型”。基本数据类型在声明时会先分配内存空间,目前Java共有byte、short、int、long、float、double、char和boolean八种基本数据类型。而引用数据类型则不会在声明时就分配内存空间,必须另外指定内存空间,也就是说,引用数据类型的变量值其实记录的是一个内存地址,这种类型的数据类型有数组、字符串。图2-2说明了基本数据类型中8种数据类型的分类关系。 2.1.1 整数类型 整数类型用来存储不含小数点的数据,与数学上的意义相同,如-1、-2、-100、0、1、2、100等。整数类型分为byte(字节)、short(短整数)、int(整数)和long(长整数)4种,按数据类型的存储单位及数值表示的范围整理如表2-1所示。 【范例程序:CH02_01】 01 //

大數據

带你读《Python金融大数据挖掘与分析全流程详解》之三:金融数据挖掘案例实战1

点击查看第一章点击查看第二章 第3章 金融数据挖掘案例实战1 学完正则表达式就可以进行比较高阶的操作了。前面介绍了如何获取百度新闻的网页源代码,本章接着利用正则表达式进行信息提取和文本分析,完成百度新闻的数据挖掘。此外,本章还将进行搜狗新闻、新浪财经的数据挖掘,帮助大家更好地掌握网络数据挖掘的方法。 3.1 提取百度新闻标题、网址、日期及来源 代码文件:3.1 百度新闻数据挖掘.py2.3节已经实现了百度新闻网页源代码的获取,下面通过正则表达式提取百度新闻标题、网址、日期及来源等信息。 3.1.1 获取网页源代码 首先回顾一下2.3节用于获取在百度新闻中搜索“阿里巴巴”的网页源代码的代码: import requests headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36

Scroll to Top