发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

什么是PCA?何时应该使用PCA?PCA是如何工作的?

论智 2018-08-24 09:07 次阅读

编者按:General Assembly数据科学主讲Matt Brems讲解了主成分分析的原理、数学和最佳实践。

在统计学经典教材Casella & Berger的前言中,作者以完美的方式解释了他们选择编写这本教材的原因:

当有人发现你在编教材的时候,会问下面两个问题。第一个是“你为什么写书?”第二个是“你的书和现有的书有什么不一样?”第一个问题相当容易回答。写书是因为你对现有的文本不完全满意。

在统计学和数据科学中,主成分分析(PCA)是非常重要的技术……但我在备课的时候,发现网上的资料过于技术性,不能完全满足我的需要,甚至提供互相冲突的信息。所以我很有把握地说,我对“现有的文本不完全满意”。

因此,我打算讲述下PCA的3W1H:什么是PCA(What),何时应用PCA(When),PCA如何工作(How),为什么PCA有效(Why)。另外,我也将提供一些深入解释这一主题的资源。我特别想要呈现这一方法的原理,其下的数学,一些最佳实践,以及潜在的缺陷。

尽管我想要让PCA尽可能地平易近人,但我们将要讨论的算法是相当技术性的。熟悉以下知识能够更容易地理解本文和PCA方法:矩阵运算/线性代数(矩阵乘法,矩阵转置,矩阵取逆,矩阵分解,本征向量/本征值)和统计/机器学习(标准化、方差、协方差、独立、线性回归、特征选取)。在文章中,我加上了指向讲解这些主题的链接,但这些链接(我希望)主要起温习作用,以备遗忘,并不要求必须阅读。

什么是PCA?

假设你想要预测美国本年度的GDP。你具有大量信息:2017年第一季度的美国GDP数据,去年的GDP,前年的GDP……你有所有公开的经济指标,比如失业率、通胀率,等等。你有2010年的人口普查数据,可以估计每个行业中有多少美国人工作,以及在人口普查间隙更新这些估计的美国社区调查数据。你知道两党在参众两院各有多少席位。你可以收集股价、IPO数量,已经有多少CEO看起来对参政感兴趣。

TL;DR——有大量变量需要考虑。

如果你之前曾经处理过大量变量,你会知道这会带来问题。你了解所有变量之间的相互关系吗?你的变量是否多到导致过拟合风险显著加大?或者违背了建模策略的假设?

你也许会问:“我怎样才能仅仅关注收集变量中的一小部分呢?”用术语说,你想要“降低特征空间的维度”。通过降低特征空间的维度,你需要考虑的变量之间的关系不那么多了,过拟合的风险也不那么高了。(注意:这并不意味着再也不需要考虑过拟合等事项——不过,我们的方向是正确的!)

毫不令人意外,降低特征空间的维度称为“降维”。有许多降维的方法,但大部分降维技术属于:

特征消除

特征提取

顾名思义,特征消除(feature elimination)通过消除特征降低特征空间的维度。在上面举的GDP的例子中,我们可以保留三个我们认为最能预测美国的GDP的特征,丢弃所有其他特征,而不是考虑所有特征。特征消除方法的优势有:简单,保持变量的可解释性。

特征消除方法的缺点是你无法从丢弃变量中获得信息。如果我们仅仅使用去年的GDP,制造业人口比例(根据最新的美国社区调查数据),失业率来预测今年的GDP,我们将失去所有丢弃变量的信息,这些丢弃变量本可以为模型贡献力量。消除特征的同时,我们也完全消除了丢弃变量可能带来的任何好处。

而特征提取没有这个问题。假设我们有十个自变量。在特征提取时,我们创建十个“新”自变量,每个“新”自变量是“旧”自变量的组合。然而,我们以特定方式创建这些新自变量,并根据它们对因变量的预测能力排序。

你可能会说:“哪里体现了降维?”好吧,我们保留所需的新自变量,丢弃“最不重要的那些”。由于我们根据新变量预测因变量的能力排序,因此我们知道哪个变量最重要,哪个变量最不重要。但是——关键部分来了——由于这些新自变量是旧变量的组合,因此我们仍然保留了旧变量最有价值的部分,尽管我们丢弃了一个或几个“新”变量!

主成分分析是一种特征提取技术——以特定的方式组合输入变量,接着在保留所有变量最有价值部分的同时,丢弃“最不重要”的变量!这还带来了有益的副作用,PCA得到的所有“新”变量两两独立。这是有益的,因为线性模型的假设要求自变量互相独立。如果我们用这些“新”变量拟合一个线性回归模型(见后文的“主成分回归”),这一假设必定会满足。

何时应该使用PCA?

你是否想要降低变量的数目,但不能够识别可以完全移除的变量?

你是否想要确保变量相互独立?

你是否可以接受让自变量变得不那么容易解释?

如果这三个问题的回答都是“是”,那PCA是一个很合适的选择。如果第三问的回答是“否”,那么你不应该使用PCA。

PCA是如何工作的?

下一节将讨论PCA为何有效。让我们在讲解算法之前先简要概括下整个过程:

我们将计算概括变量互相关性的矩阵。

接着我们将这一矩阵分为两部分:方向和大小。之后我们可以了解数据的“方向”及其“大小”(也就是每个方向有多“重要”)。下图展示了数据的两个主要方向:“红向”和“绿向”。在这一情形下,“红向”更重要。我们将在后文讨论这是为什么,不过,看看给定的数据点排列的方式,你能看出为什么“红向”比“绿向”更重要吗?(提示:能最好地拟合这些数据的直线看起来是什么样?)

图片来源:setosa.io

我们将沿着重要方向(原变量的组合)转换原始数据。下图是经过转换的数据,x轴和y轴遵循“红向”和“绿向”。能最好地拟合这些数据的直线看起来会是什么样?

图片来源:setosa.io

尽管这里的可视化例子是二维的(因此我们有两个“方向”),我们可以设想数据具有更多维度的情形。通过识别哪些“方向”最“重要”,我们可以通过丢弃“最不重要”的“方向”将数据压缩进较小的特征空间。通过将数据投射到较小的特征空间,我们降低了特征空间的维度。但因为数据是根据这些不同的“方向”转换的,我们确保模型保留了所有原变量。

下面我将具体讲解推导PCA的算法。我尝试避免让本文过于技术性,但这里的细节不可能忽略,因此我的目标是尽可能明确地讲解。下一节将深入讨论为什么这一算法有效的直觉。

在开始之前,将数据整理成表格形式,n行,p+1列,其中一列对应因变量(通常记为Y),p列对应于自变量(这一自变量矩阵通常记为X)。

根据上一段的定义,将数据分成Y和X——我们主要处理X。

在自变量矩阵X的每一列上,从每个条目中减去该列的均值。(这确保每列的均值为0.)

决定是否标准化。给定X的列,是否高方差的特征比低方差的特征更重要?(这里重要指特征能更好地预测Y。)如果特征的重要性独立于特征的方差,那么将列中的每项观测除以该列的标准差。(结合第二步、第三步,我们将X的每列标准化了,确保每列的均值为零,标准差为1.)所得矩阵称为Z。

转置矩阵Z,将转置矩阵和原矩阵相乘。(数学上写为ZTZ.)所得矩阵为Z的协方差矩阵(无视常数差异)。

(这大概是最难的一步——跟紧了。)计算ZTZ的本征向量和相应的本征值。在大多数计算软件包下,这都很容易做到——事实上,ZTZ的本征分解为将ZTZ分解为PDP-1,其中P为本征向量矩阵,D为对角线为本征值、其余值均为零的对角矩阵。D的对角线上的本征值对应P中相应的列——也就是说,D对角线上的第一个元素是λ1,相应的本征向量是P的第一列。我们总是能够计算出这样的PDP-1。(奖励:致对此感兴趣的读者,我们之所以总是能够计算出这样的PDP-1是因为ZTZ是一个对称正定矩阵。)

将本征值λ1,λ2…,λp由大到小排列。并据此排列P中相应的本征向量。(例如,如果λ2是最大的本征值,那么就将P的第二列排到第一。)取决于计算软件包,这可能可以自动完成。我们将这一经过排序的本征向量矩阵记为P*。(P*的列数应当与P相同,只不过顺序可能不同。)注意这些本征向量相互独立。

计算Z* = ZP*。这一新矩阵Z*不仅是X的标准化版本,同时其中的每个观测是原变量的组合,其中的权重由本征向量决定。一个额外的好处是,由于P*中的本征向量是相互独立的,Z*的每一列也是相互独立的!

左为原数据X,右为经PCA转换后的数据Z*(图片来源:setosa.io)

上图中,有两点值得注意:

由于我们的主成分相互之间是正交的,因此它们在统计学上是相互独立的……这就是为什么Z*中的列相互独立的原因!

左图和右图显示的是同样的数据,但右图表现的是转换后的数据,坐标轴为主成分。

不管是左图还是右图,主成分相互垂直。事实上,所有主成分总是互相正交(正交是垂直的正式数学术语)。

最后,我们需要决定要保留多少特征,丢弃多少特征。决定这一事项有三种常见的方法,我们下面将讨论这三种方法并举例说明:

现在我们简单解释下解释方差比例这个概念。因为每个本征值大致等于相应本征向量的重要性,所以解释方差比例等于保留特征的本征值之和除以所有特征的本征值。

基因数据的陡坡图(来源:improvedoutcomes.com)

考虑上面的基因数据的陡坡图。红线表明每个特征的解释方差比例,将该主成分的本征值除以所有本征值之和可以得到这一数值。仅仅包括主成分1的解释方差比例是λ1/(λ1 + λ2 + … + λp),约为23%. 仅仅包括主成分2的解释方差比例是λ2/(λ1 + λ2 + … + λp),约为19%.

包括主成分1和主成分2的解释方差比例是(λ1 + λ2)/(λ1 + λ2 + … + λp),约为42%. 也就是图中黄线的部分,黄线表明包括到该点为止的所有主成分的解释方差比例。例如,PC2处的黄点表明包括主成分1和主成分2可以解释42%的模型总方差。

下面,让我们看一些例子:

注意:有些陡坡图的Y轴是本征向量大小而不是方差比例。这样的陡坡图得出的结果是等价的,不过需要手工计算方差比例。

图片来源:statsoft.com

法一:假设我想保留模型中的5个主成分。在上面的基因数据例子中,这5个主成分可以解释66%的总方差(包括全部13个主成分的方差)。

法二:假设我想包括足够的主成分,解释90%的总方差。在上面的基因数据例子中,我将包括前10个主成分,丢弃最后3个变量。

法三:这次我们想要“找到肘部”。从上图中,我们看到,在主成分2和主成分3之间有解释方差比例的较大下降。在这一情形下,我们打算包括前两个特征,丢弃其余特征。如你所见,这个方法有一定的主观性,因为“肘部”没有一个数学上精确的定义,并且在这个例子中,包括前两个特征的模型只能解释42%的总方差。

法一: 随意选择想要保留多少维度。也许我想在二维平面上可视化数据,所以我可能只保留两个特征。这取决于用例,没有硬性规则。

法二: 计算每个特征的解释方差比例(下面将简要解释这一概念),选取一个阈值,不断加上特征直到达到阈值。(例如,如果你想要让模型可以解释80%的总方差,那就加上解释方差比例最大的特征,直到可解释的方差比例达到或超过80%.)

法三: 这一方法和法二密切相关。计算每个特征的解释方差比例,根据解释方差比例排序特征,并随着更多特征的保留,标绘出解释方差的累计比例。(这一图形称为陡坡图,见下。)根据陡坡图可以决定包含的特征的数量,在陡坡图中找到解释方差比例明显小于前一点的点,然后选择到该点为止的特征。(这个方法叫做“找肘法”,因为它通过寻找陡坡图的“弯曲处”或“肘部”以判定解释方差比例最大下降在何处发生。)

丢弃了我们想要丢弃的转换后的变量,就可以收工了!这就是PCA.

但是,为什么PCA有效?

尽管PCA是一个深度依赖线性代数算法的非常技术性的方法,仔细想想,它其实是一个相对直观的方法。

首先,协方差矩阵ZTZ包含了Z中每个变量和其他各个变量相关性的估计。这是一个了解变量相关性的强力工具。

其次,本征值和本征向量很重要。本征向量表示方向。设想下将数据绘制在一张多维的散布图上。每个本征向量可以想像成数据散布图的一个“方向”。本征值表示大小,或者重要性。更大的本征值意味着更重要的方向。

最后,我们做了一个假设,一个特定方向上的更多差异和解释因变量行为的能力相关。大量差异通常意味着信号,而极少差异通常意味着噪音。因此,一个特定方向上的更多差异,理论上意味着这一方向上有一些我们想要检测的重要东西。

所以说,PCA是一个结合了以下概念的方法:

变量之间的相关性的测度(协方差矩阵)。

数据散布的方向(本征向量)。

这些不同方向的相对重要性(本征值)。

PCA组合了预测因子,让我们可以丢弃相对不那么重要的本征向量。

PCA有扩展吗?

有,不过限于篇幅,这里不多说。最常见到的是主成分回归,在Z*中未曾丢弃的特征子集上进行回归。这里Z*的相互独立发挥了作用;在Z*上回归Y,我们知道一定能满足自变量相互独立这一点。不过,我们仍然需要检查其他假设。

另一个常见的变体是核PCA,即先使用核函数升维,再使用PCA降维,从而将PCA应用于非线性情形。

原文标题:主成分分析PCA一站式指南

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

java基础—变量_上

 课程介绍课程大纲课程目标JavaSE作为通向Java大神的必经之路,是做任何Java开发的必备核心基础技术。
发表于 09-14 00:00 0次 阅读
java基础—变量_上

查找用法功能不适用于全局变量?

在任何全局变量上使用“查找用法”(ALT-F7)函数会产生“不出现”结果。即使你右键点击变量的名称(显然是有发生的)。它对...
发表于 09-20 10:02 14次 阅读
查找用法功能不适用于全局变量?

变量仍然保持初始值

你好,当我一步一步地执行我的程序时,我有一个奇怪的行为:当程序在上面代码的第二行上停止,并且我执行该行(一步一步地过去)...
发表于 09-19 13:30 11次 阅读
变量仍然保持初始值

带有16F87UC的PICTIT2怎样才能看到实时变化的变量?

大家好。我在PIC世界是新的,这是我的第一篇文章。我有几个问题,希望你能帮助我。1)我使用的是一个带有16F87UC的PICT...
发表于 09-19 11:17 10次 阅读
带有16F87UC的PICTIT2怎样才能看到实时变化的变量?

怎么传递一个在头文件.Count.h中定义的结构变量?

我试图传递一个在头文件“.Count.h”中定义的结构变量。而“.Count.c”文件声明了头。然后尝试从另一个文件访问“data.c”。在...
发表于 09-19 11:05 23次 阅读
怎么传递一个在头文件.Count.h中定义的结构变量?

XC8-MCC-ramBuf是什么意思?

嗨,Alli对使用MCC有疑问,我已经使用它,并且它生成了一个简单的EEDATA_write,其中包含通常要存储的位置和值的两个变...
发表于 09-18 10:22 24次 阅读
XC8-MCC-ramBuf是什么意思?

关于如何控制变量在生成代码里的作用分析和介绍

这样在生成代码的时候,参数p1就会定义为int32的数据类型,并且声明为extern。而且它的声明和....
的头像 MATLAB 发表于 09-17 16:18 46次 阅读
关于如何控制变量在生成代码里的作用分析和介绍

关于使用Stateflow调用外部C代码的教程介绍

说到这里很多人可能会迷糊了,Stateflow要生成代码?没错,Stateflow的运行不同于Sim....
的头像 MATLAB 发表于 09-17 08:43 86次 阅读
关于使用Stateflow调用外部C代码的教程介绍

ldr r0, =SMRDATA是怎么将.word值赋给r0的?

ldr     r0, =SMRDATA    是如何将  .word值赋给r0 ?表示什么意思 .word不是...
发表于 09-17 05:45 83次 阅读
ldr r0, =SMRDATA是怎么将.word值赋给r0的?

内存分配问题

你好, 首先你可以看到这个数字。 源端口变量数据类型是无符号短,所以下一个DestPoad变量地址是0x200 0 D84。 DestPoad...
发表于 09-16 10:26 21次 阅读
内存分配问题

怎么在变量上设置监视

我用PIc16F1827编写汇编代码。我可以给任何定义的SFR添加手表,没有问题,但我似乎不能设置一个到我的变量。我用一个CBO...
发表于 09-12 12:46 53次 阅读
怎么在变量上设置监视

关于结构体变量建模的介绍和原理

将 Inport 端口的数据类型设置为 myBus,Inport 的外观发生变化,变成环形。为控制结....
的头像 MATLAB 发表于 09-12 09:54 48次 阅读
关于结构体变量建模的介绍和原理

单变量ks值的前世今生

风控模型中的K-S理解以及python实现
发表于 09-12 08:46 67次 阅读
单变量ks值的前世今生

SQL数据库常用命令全集资料免费下载

本文档的主要内容详细介绍的是SQL数据库常用命令全集资料免费下载。
发表于 09-12 08:00 43次 阅读
SQL数据库常用命令全集资料免费下载

关于用MATLAB 实现简易钢琴 App的教程分享

最后,进行适当的美化,通过 rectangle 函数画出矩形琴键,通过 text 函数标注音阶和键盘....
的头像 MATLAB 发表于 09-11 15:22 128次 阅读
关于用MATLAB 实现简易钢琴 App的教程分享

怎么在isr中修改struct中的数据

HII不想使用全局变量,那么在结构主文件中更改成员的最佳方法是什么?...
发表于 09-11 07:03 11次 阅读
怎么在isr中修改struct中的数据

8051单片机int字节的实现

在使用单片机中,unsigned int 占2个字节,unsigned char 占一个字节。而单片....
发表于 09-07 10:17 76次 阅读
8051单片机int字节的实现

控制系统的数学模型PPT电子教程免费下载

系统的数学模型是描述系统输入、输出变量以及内部各个变量之间关系的数学表达式。
发表于 09-06 08:00 73次 阅读
控制系统的数学模型PPT电子教程免费下载

TCL编程初步中文PDF电子书免费下载

Tcl 全称是 Tool command Language。它是一个基于字符串的命令语言,基础结构和....
发表于 08-30 08:00 68次 阅读
TCL编程初步中文PDF电子书免费下载

C语言的for循环语句的程序和电路图免费下载

1、在许多实际问题中,需要程序进行有规律的重复执行,这时可以用循环语句来实现。在c语言中。用来实现循....
发表于 08-20 17:31 17次 阅读
C语言的for循环语句的程序和电路图免费下载

在51平台下初始化文件的引入导致全局变量无法初始化的问题如何解决

本文档的主要内容详细介绍的是在51平台下初始化文件的引入导致全局变量无法初始化的问题如何解决。
发表于 08-20 17:31 99次 阅读
在51平台下初始化文件的引入导致全局变量无法初始化的问题如何解决

C51程序的code是怎么使用的

从code开始,是因为code比较简单,只不过是告诉程序这个变量(其实是不能变的)的存放空间是在代码....
发表于 08-16 17:31 7次 阅读
C51程序的code是怎么使用的

使用单片机设计任意菜单结构的资料和程序免费下载

在单片机系统的人机界面设计中,通常需要采用菜单的方式来与用户交互信息,而对于某些应用系统它的菜单结构....
发表于 08-16 17:31 19次 阅读
使用单片机设计任意菜单结构的资料和程序免费下载

使用单片机的串口发送数据帧的程序免费下载

本文档的主要内容详细介绍的是使用单片机的串口发送数据帧的程序免费下载。
发表于 08-15 17:32 7次 阅读
使用单片机的串口发送数据帧的程序免费下载

使用51单片机进行有关变量及初始化问题资料讲解

如果定义一个变量,不对这个变量进行初始化,其变量默认初值为0。虽然大部分正确,但也是在一定条件下,即....
发表于 08-13 17:32 99次 阅读
使用51单片机进行有关变量及初始化问题资料讲解

如何使用关中断和互斥量来保护多线程共享的全局变量资料和程序说明

在前面一些章节中,我提到为了防止中断函数把某些共享数据破坏,在主函数中更改某个数据变量时,应该先关闭....
发表于 08-08 17:33 8次 阅读
如何使用关中断和互斥量来保护多线程共享的全局变量资料和程序说明

单片机XDATA和DATA区的一些错误问题讲解

最近在做项目的时候在编译keil文档时遇到问题,其实自己也是小白菜,在做项目中慢慢进步,遇到问题解决....
发表于 08-06 17:34 6次 阅读
单片机XDATA和DATA区的一些错误问题讲解

怎么样组态PLC块中的结构变量才能让他在WinCC中使用

在 FB1 中选择结构变量aaa,单击右键打开 aaa 的关联菜单。打开 aaa 的 “Object....
的头像 工控云学堂 发表于 08-03 10:06 487次 阅读
怎么样组态PLC块中的结构变量才能让他在WinCC中使用

单片机中工程的文件结构是怎样的详细资料分析

一直以来都是在原有的工程上直接新建自己的模块文件,现在一到自己新建工程的时候就出现了各种的链接错误(....
发表于 07-31 17:35 3次 阅读
单片机中工程的文件结构是怎样的详细资料分析

单片机C语言变量是如何定义的怎样进行赋值

在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(....
发表于 07-31 17:35 5次 阅读
单片机C语言变量是如何定义的怎样进行赋值

MATLAB教程之MATLAB符号运算的详细资料说明

Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。M....
发表于 07-24 16:03 116次 阅读
MATLAB教程之MATLAB符号运算的详细资料说明

模拟设备驱动

我们的应用是一个视频演示平台。在这个平台上,Zynq SoC中ARM Cortex-A9 MPCor....
的头像 赛灵思 发表于 07-24 15:19 389次 阅读
模拟设备驱动

51单片机的变量的绝对定位的使用和几点说明

C51有三种方式可以对变量(I/O端口)绝对定 位:绝对定位关键字_at_ 、指针、库函数的绝对定 ....
发表于 07-23 17:37 3次 阅读
51单片机的变量的绝对定位的使用和几点说明

IDA Python初学者指南中文版免费下载

我写这本书的本意其实是为了给自己做参考,在我想用 IDAPython 的时候能够随时找到一些关于 I....
发表于 07-22 08:00 142次 阅读
IDA Python初学者指南中文版免费下载

python的入门考试题免费下载

本文档的主要内容详细介绍的是python的入门考试题免费下载。
发表于 07-19 08:00 89次 阅读
python的入门考试题免费下载

C语言关键字static有哪些绝妙用途

为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个....
发表于 07-18 17:38 6次 阅读
C语言关键字static有哪些绝妙用途

51单片机的延时函数免费下载

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比un....
发表于 07-17 17:38 23次 阅读
51单片机的延时函数免费下载

位域结构体变量在主流控制器编程时应该要注意那些事项

很多人搞电子软件编程的人都是从sram很紧缺的51单片机或其他低端单片机入门的。大家都知道,51单片....
发表于 07-16 17:39 3次 阅读
位域结构体变量在主流控制器编程时应该要注意那些事项

51单片机的指令集详细资料说明

本文档的主要内容详细介绍的是51单片机的指令集详细资料说明包括了:1、数据传送类指令,2、算术操作类....
发表于 07-16 17:39 21次 阅读
51单片机的指令集详细资料说明

MATLAB教程之经典MATLAB矩阵及其运算的详细资料说明

本文档的主要内容详细介绍的是MATLAB教程之经典MATLAB矩阵及其运算的详细资料说明包括了:1 ....
发表于 07-11 16:14 103次 阅读
MATLAB教程之经典MATLAB矩阵及其运算的详细资料说明

如何使用51单片机定时器功能实现测量脉冲宽度

STC12C系列增强型单片机片上扩展了基本51单片机的功能,如提供了PCA/PWM接口,定时器能工作....
发表于 07-09 17:40 23次 阅读
如何使用51单片机定时器功能实现测量脉冲宽度

关于PLC的变量它到底有什么作用

作为一个电气工程师,接触PLC编程那是经常的,所以对于编程软件,了解并掌握它的基础知识很重要,这也关....
发表于 07-03 17:48 394次 阅读
关于PLC的变量它到底有什么作用

51单片机中变量的存储类型有什么区别

本文档的主要内容详细介绍的是51单片机中变量的存储类型有什么区别。
发表于 07-03 17:41 22次 阅读
51单片机中变量的存储类型有什么区别

51单片机中的bit和sbit有什么区别

问题:什么是bit和sbit?他们有什么区别? bit : 编译时分配空间 sbit 只能在外部....
发表于 07-01 17:42 16次 阅读
51单片机中的bit和sbit有什么区别

51单片机串口printf的使用和变量循环问题实例函数说明

 每次在使用到51内核的MCU是总会很头疼,原因有很多,主要的就是仿真,串口打印调试等比较麻烦。但是....
发表于 06-28 17:42 26次 阅读
51单片机串口printf的使用和变量循环问题实例函数说明

MATLAB的三个仿真实验练习题资料免费下载

本文档的主要内容详细介绍的是MATLAB的三个仿真实验练习题资料免费下载包括了:实验一: MATLA....
发表于 06-27 08:00 153次 阅读
MATLAB的三个仿真实验练习题资料免费下载

多传感器多源信息融合理论及应用PDF电子书免费下载

本书是关于多传感器多源信息融合理论与应用的一本专著,主要汇集了作者近年来在多源信息融合基础理论与方法....
发表于 06-26 08:00 159次 阅读
多传感器多源信息融合理论及应用PDF电子书免费下载

Matlab的简介和使用及Matlab与数值分析相关内容说明

Matlab软件是一个功能非常强大的数学软件。 包括:科学计算、符号计算、图形处理等功能。 Mat....
发表于 06-13 16:24 132次 阅读
Matlab的简介和使用及Matlab与数值分析相关内容说明

Java运算符应该如何使用详细使用说明

复合运算符: +=:把右边的数值与变量的值相加后赋值给变量。例如:int a=10; a+=10;....
发表于 06-11 17:47 17次 阅读
Java运算符应该如何使用详细使用说明

自动编码器与PCA的比较

自编码器虽然不像 PCA 那般在教科书上随处可见,但是在早期被拿来做深度网络的逐层预训练,其地位可见....
发表于 06-11 15:37 453次 阅读
自动编码器与PCA的比较

普通变量与寄存器变量速度对比

如果涉及取址运算,采用普通变量耗时0.7867秒,采用寄存器变量耗时0.4792秒,速度上的差别就没....
发表于 06-03 11:43 194次 阅读
普通变量与寄存器变量速度对比

静态变量、自动变量与寄存器变量的存储

register限定词通知编译器--程序中的变量将频繁使用。它的意思是建议编译器将程序中用regis....
发表于 06-03 11:27 181次 阅读
静态变量、自动变量与寄存器变量的存储

寄存器变量的存储类别

对于局部变量来说,static变量和auto变量是相对而言的。在语句块执行期间,static变量将始....
发表于 06-03 11:07 133次 阅读
寄存器变量的存储类别

寄存器变量定义

 寄存器变量和普通变量比起来速度上的差异很大,毕竟CPU的速度远远大于内存的速度。寄存器有这么两个特....
发表于 06-03 10:40 158次 阅读
寄存器变量定义

寄存器变量

C语言中使用关键字register来声明局部变量为寄存器变量。寄存器变量的值会被存放在CPU的寄存器....
发表于 06-03 10:13 133次 阅读
寄存器变量

单片机的静态变量详细资料讲解

静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值....
发表于 05-30 17:55 51次 阅读
单片机的静态变量详细资料讲解

汽机PCA段系统图设计模型图资料免费下载

本文档的主要内容详细介绍的是汽机PC1A段系统图设计模型图资料免费下载。
发表于 05-17 08:00 72次 阅读
汽机PCA段系统图设计模型图资料免费下载

STC单片机的CCP和PCA及PWM模块的原理及实现详细资料说明

STC15系列部分单片机内部集成了三路CCP/PCA/PWM模块,如图 24.1所示。注: STC1....
发表于 05-16 08:00 306次 阅读
STC单片机的CCP和PCA及PWM模块的原理及实现详细资料说明

逻辑代数的基本定律详细实例说明

本文档的主要内容详细介绍的是逻辑代数的基本定律详细实例说明包括了:代入定理,反演定理,对偶定理。
发表于 05-05 08:00 178次 阅读
逻辑代数的基本定律详细实例说明

TensorFlow 变量:表示程序处理的共享持久状态的最佳方法

在 TensorFlow 内部,tf.Variable 会存储持久性张量。
的头像 TensorFlow 发表于 04-29 16:34 539次 阅读
TensorFlow 变量:表示程序处理的共享持久状态的最佳方法

组态王6.53版本如何设定管道流速

最近有朋友问我关于组态王流动怎么设定流速, 除了在画面属性里面编程, 还有没有其他更简单的方法。好像....
发表于 04-26 16:59 106次 阅读
组态王6.53版本如何设定管道流速