类型

编程语言类型初探:弱类型、强类型、动态类型、静态类型 最近在B站看到一个UP主做了一期关于编程语言类型的讨论视频,激发了个人的兴趣,也有一些感触,在上网学习了一些相关知识后,写一写自己对于编程语言类型的一些理解。 强类型: 维基百科的解释:大致而言,“强类型”隐含着编程语言对容许混合情况出现加上了严格的限制,以避免代码以无效的数据使用方式编译或运行。例如,整数除法运算不可用于字符串;链表上的运算步骤不可用于数字。然而,这些限制的本质和效力是极易改... 阅读详情

http://www.5151doc.info/sysProgram/VC/VCMB/149813.html

 

 

 

 

 

一. VC常用数据类型列表



二. 常用数据类型转化



2.1数学类型变量与字符串相互转换

2.2 CString及string,char *与其他数据类型的转换和操作

●CString,string,char*的综合比较

●数学类型与CString相互转化

●CString与char*相互转换举例

●CString 与 BSTR 型转换

●VARIANT 型转化成 CString 型

2.3 BSTR、_bstr_t与CComBSTR



2.4 VARIANT 、_variant_t 与 COleVariant



附录CString及字符串转及操作详解


参考书籍:优快云,<<MFC深入浅出(Second Edit)>>



一.VC常用数据类型列表

Type Default Size Description
基础类型 全是小写 说明:这些基础数据类型对于MFC还是API都是被支持的

boolean
unsigned 8 bit , 取值TRUE/FALSE

byte
unsigned 8 bit, 整数,输出按字符输出

char
unsigned 8 bit, 字符

double
signed 64 bit 浮点型

float
signed32 bit 浮点型

handle_t Primitive handle type

hyper
signed 64 bit 整型

int
signed 32 bit 整型

long
signed 32 bit 整型

short
signed 16 bit 整型

small
signed 8 bit 整型

void *
32-bit 指向未知类型的指针

wchar_t
unsigned 16 bit 16位字符,比char可容纳更多的字符

Win32API常用数据类 型 全大写 说明: 这些Win32API支持的简单数据类型主要是用来定义函数返回值,消息参数,结构成员。这类数据类型大致可以分为五大类:字符型、布尔型、整型、指针型和句柄型(?). 总共大概有100多种不同的类型,
BOOL/BOOLEAN
8bit,TRUE/FALSE 布尔型
BYTE
unsigned 8 bit
BSTRCComBSTR_bstr_t
32 bit BSTR是指向字符串的32位指针是对BSTR的封装是对BSTR的封装
CHAR
8 bit (ANSI)字符类型
COLORREF
32 bit RGB颜色值 整型
DWORD
unsigned 32 bit 整型
FLOAT
float型 float型
HANDLE Object句柄
HBITMAP bitmap句柄
HBRUSH brush句柄
HCURSOR cursor句柄
HDC 设备上下文句柄
HFILE OpenFile打开的File句柄
HFONT font句柄
HHOOK hook句柄
HKEY 注册表键句柄
HPEN pen句柄
HWND window句柄
INT
-------- --------
LONG
-------- ---------
LONGLONG 64位带符号整型
LPARAM
32 bit 消息参数
LPBOOL BOOL型指针
LPBYTE BYTE型指针
LPCOLOREF COLORREF型指针
LPCSTR/LPSTR/PCSTR 指向8位(ANSI)字符串类型指针
LPCWSTR/LPWSTR/PCWSTR 指向16位Unicode字符串类型
LPCTSTR/LPTSTR/PCTSTR 指向一8位或16位字符串类型指针
LPVOID 指向一个未指定类型的32位指针
LPDWORD 指向一个DWORD型指针
其他相似类型: LPHANDLE、LPINT、LPLONG、LPWORD、LPRESULTPBOOL、PBOOLEAN、PBYTE、PCHAR、PDWORD、PFLOAT、PHANDLE、PINT、PLONG、PSHORT……说明:(1)在16位系统中 LP为16bit,P为8bit,在32位系统中都是32bit(此时等价)(2)LPCSTR等 中的C指Const,T表示TCHAR模式即可以工作在ANSI下也可UNICODE
SHORT
usigned 整型
其他UCHAR、UINT、ULONG、ULONGLONG、USHORT为无符号相应类型
TBYTE WCHAR型或者CHAR型
TCHAR ANSI与unicode均可
VARIANT_variant_tCOleVariant 一个结构体参考OAIDL.H_variant_t是VARIANT的封装类COleVariant也是VARIANT的封装类


WNDPROC 指向一个窗口过程的32位指针
WCHAR 16位Unicode字符型
WORD 16位无符号整型
WPARAM 消息参数
MFC独有数据类型 下面两个数据类型是微软基础类库中独有的数据类型

POSITION 标记集合中一个元素的位置的值,被MFC中的集合类所使用

LPCRECT 指向一个RECT结构体常量(不能修改)的32位指针

CString 其实是MFC中的一个类





说明:

(1)-------表示省略

(2)1Byte=8Bit,

字与机器有关,在8位系统中:字=1字节,16位系统中,1字=2字节,32位中:1字=4字节,

64位中1字=8字节.不要搞混这些概念.

二.常用数据类型转化及操作2.1 数学类型变量与字符串相互转换(这些函数都在STDLIB.H里)



(1)将数学类型转换为字符串可以用以下一些函数:

举例: _CRTIMP char * __cdecl _itoa(int, char *, int);//这是一个将数字转换为一个字符串类型的函数,最后一个int表示转换的进制

如以下程序:
int iTyep=3;char *szChar;itoa(iType,szChar,2);cout<<szChar;//输出为1010

类似函数列表:

_CRTIMP char * __cdecl _itoa(int, char *, int);//为了完整性,也列在其中_CRTIMP char * __cdecl _ultoa(unsigned long, char *, int);_CRTIMP char * __cdecl _ltoa(long, char *, int);_CRTIMP char * __cdecl _i64toa(__int64, char *, int);_CRTIMP char * __cdecl _ui64toa(unsigned __int64, char *, int);_CRTIMP wchar_t * __cdecl _i64tow(__int64, wchar_t *, int);_CRTIMP wchar_t * __cdecl _ui64tow(unsigned __int64, wchar_t *, int);_CRTIMP wchar_t * __cdecl _itow (int, wchar_t *, int);//转换为长字符串类型_CRTIMP wchar_t * __cdecl _ltow (long, wchar_t *, int);_CRTIMP wchar_t * __cdecl _ultow (unsigned long, wchar_t *, int);还有很多,请自行研究(2)将字符串类型转换为数学类型变量可以用以下一些函数:举例: _CRTIMP int __cdecl atoi(const char *);//参数一看就很明了char *szChar=”88”;int temp(0);temp=atoi(szChar);cout<<temp;类似的函数列表:_CRTIMP int __cdecl atoi(const char *);_CRTIMP double __cdecl atof(const char *);_CRTIMP long __cdecl atol(const char *);_CRTIMP long double __cdecl _atold(const char *);_CRTIMP __int64 __cdecl _atoi64(const char *);_CRTIMP double __cdecl strtod(const char *, char **);//_CRTIMP long __cdecl strtol(const char *, char **, int);//_CRTIMP long double __cdecl _strtold(const char *, char **);_CRTIMP unsigned long __cdecl strtoul(const char *, char **, int);_CRTIMP double __cdecl wcstod(const wchar_t *, wchar_t **);//长字符串类型转换为数学类型_CRTIMP long __cdecl wcstol(const wchar_t *, wchar_t **, int);_CRTIMP unsigned long __cdecl wcstoul(const wchar_t *, wchar_t **, int);_CRTIMP int __cdecl _wtoi(const wchar_t *);_CRTIMP long __cdecl _wtol(const wchar_t *);_CRTIMP __int64 __cdecl _wtoi64(const wchar_t *);还有很多,请自行研究

2.2.CString及string,char *与其他数据类型的转换和操作

(1)CString,string,char*的综合比较(这部分优快云上的作者joise的文章<< CString,string,char*的综合比较>>写的很详细,请大家在仔细阅读他的文章.

地址: http://blog.youkuaiyun.com/joise/

或参考附录:

(2)转换:
●数学类型与CString相互转化

数学类型转化为CString

可用Format函数,举例:

CString s;

int i = 64;

s.Format("%d", i)
CString转换为数学类型:举例
CString strValue("1.234");

double dblValue;

dblValue = atof((LPCTSTR)strValue);



●CString与char*相互转换举例

CString strValue(“Hello”);

char *szValue;

szValue=strValue.GetBuffer(szValue);
也可用(LPSTR)(LPCTSTR)对CString// 进行强制转换.

szValue=(LPSTR)(LPCTSTR)strValue;

反过来可直接赋值:

char *szChar=NULL;

CString strValue;

szChar=new char[10];

memset(szChar,0,10);

strcpy(szChar,”Hello”);

strValue=szChar;



●CString 与 BSTR 型转换

CString 型转化成 BSTR 型

当我们使用 ActiveX 控件编程时,经常需要用到将某个值表示成 BSTR 类型.BSTR 是一种记数字符串,Intel平台上的宽字符串(Unicode),并且可以包含嵌入的 NULL 字符。

可以调用 CString 对象的 AllocSysString 方法将 CString 转化成 BSTR:

CString str;

str = .....; // whatever

BSTR bStr = str.AllocSysString();


BSTR型转换为CString

如果你在 UNICODE 模式下编译代码,你可以简单地写成:

CString convert(BSTR bStr)

{

if(bStr == NULL)

return CString(_T(""));

CString s(bStr); // in UNICODE mode

return s;

}

如果是 ANSI 模式

CString convert(BSTR b)

{

CString s;

if(b == NULL)

return s; // empty for NULL BSTR

#ifdef UNICODE

s = b;

#else

LPSTR p = s.GetBuffer(SysStringLen(b) + 1);

::WideCharToMultiByte(CP_ACP, // ANSI Code Page

0, // no flags

b, // source widechar string

-1, // assume NUL-terminated

p, // target buffer

SysStringLen(b)+1, // target buffer length

NULL, // use system default char

NULL); // don''t care if default used

s.ReleaseBuffer();

#endif

return s;

}


●VARIANT 型转化成 CString 型

VARIANT 类型经常用来给 COM 对象传递参数,或者接收从 COM 对象返回的值。你也能自己编写返回 VARIANT 类型的方法,函数返回什么类型 依赖可能(并且常常)方法的输入参数(比如,在自动化操作中,依赖与你调用哪个方法。IDispatch::Invoke 可能返回(通过其一个参数)一个 包含有BYTE、WORD、float、double、date、BSTR 等等 VARIANT 类型的结果,(详见 MSDN 上的 VARIANT 结构的定义)。在下面的例子中,假设 类型是一个BSTR的变体,也就是说在串中的值是通过 bsrtVal 来引用,其优点是在 ANSI 应用中,有一个构造函数会把 LPCWCHAR 引用的值转换为一个 CString(见 BSTR-to-CString 部分)。在 Unicode 模式中,将成为标准的 CString 构造函数,参见对缺省::WideCharToMultiByte 转换的告诫,以及你觉得是否可以接受(大多数情况下,你会满意的)。VARIANT vaData;

vaData = m_com.YourMethodHere();

ASSERT(vaData.vt == VT_BSTR);

CString strData(vaData.bstrVal);

你还可以根据 vt 域的不同来建立更通用的转换例程。为此你可能会考虑:

CString VariantToString(VARIANT * va)

{

CString s;

switch(va->vt)

{ /* vt */

case VT_BSTR:

return CString(vaData->bstrVal);

case VT_BSTR | VT_BYREF:

return CString(*vaData->pbstrVal);

case VT_I4:

s.Format(_T("%d"), va->lVal);

return s;

case VT_I4 | VT_BYREF:

s.Format(_T("%d"), *va->plVal);

case VT_R8:

s.Format(_T("%f"), va->dblVal);

return s;

... 剩下的类型转换由读者自己完成

default:

ASSERT(FALSE); // unknown VARIANT type (this ASSERT is optional)

return CString("");

} /* vt */

}



2.3 BSTR、_bstr_t与CComBSTR



CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。

char *转换到BSTR可以这样:

BSTR b=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h

反之可以使用char *p=_com_util::ConvertBSTRToString(b);



2.4(引)VARIANT 、_variant_t 与 COleVariant



VARIANT的结构可以参考头文件VC98/Include/OAIDL.H中关于结构体tagVARIANT的定义。

对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:

VARIANT va;

int a=2001;

va.vt=VT_I4;///指明整型数据

va.lVal=a; ///赋值

对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:

unsigned char bVal; VT_UI1

short iVal; VT_I2

long lVal; VT_I4

float fltVal; VT_R4

double dblVal; VT_R8

VARIANT_BOOL boolVal; VT_BOOL

SCODE scode; VT_ERROR

CY cyVal; VT_CY

DATE date; VT_DATE

BSTR bstrVal; VT_BSTR

IUnknown FAR* punkVal; VT_UNKNOWN

IDispatch FAR* pdispVal; VT_DISPATCH

SAFEARRAY FAR* parray; VT_ARRAY|*

unsigned char FAR* pbVal; VT_BYREF|VT_UI1

short FAR* piVal; VT_BYREF|VT_I2

long FAR* plVal; VT_BYREF|VT_I4

float FAR* pfltVal; VT_BYREF|VT_R4

double FAR* pdblVal; VT_BYREF|VT_R8

VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL

SCODE FAR* pscode; VT_BYREF|VT_ERROR

CY FAR* pcyVal; VT_BYREF|VT_CY

DATE FAR* pdate; VT_BYREF|VT_DATE

BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR

IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN

IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH

SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*

VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT

void FAR* byref; VT_BYREF

_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。

例如:

long l=222;

ing i=100;

_variant_t lVal(l);

lVal = (long)i;

COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:

COleVariant v3 = "字符串", v4 = (long)1999;

CString str =(BSTR)v3.pbstrVal;

long i = v4.lVal;

Go 学习笔记(32)— 类型系统(命名类型、未命名类型、底层类型、类型强制转换、类型别名和新声明类型) 1. 命名类型和未命名类型 1.1 命名类型 类型可以通过标识符来表示,这种类型称为命名类型( Named Type )。 Go 语言的基本类型中有 20 个预声 明简单类型都是命名类型, Go 语言还有一种命名类型一一用户自定义类型。 1.2 未命名类型 一个类型由预声明类型、关键字和操作符组合而成,这个类型称为未命名类型( Unamed Type )。未命名类型又称为类型字面量( Type Literal )。 Go 语言的基本类型中的复合类型:数组( array )、切片( slice ) 阅读详情

相关推荐

LabVIEW调用.so文件的方法

LabVIEW调用.so文件的方法

m0_37878912的博客 3024

VC常用的数据类型

作者:cy757 转自:http://blog.youkuaiyun.com/cy757/article/details/2785192   数据类型 意义 BOOL Boolean值(TRUE or FALSE) BSTR 32-bit字符指针 BYTE 8-bit整数,无正负号

老瓦的笔记本 704

第十篇|网络子系统 ②——无损以太网、PFC/ECN、DCQCN 与拥塞可视化

网络部分了解了解

qq_37535542的博客 1874

VC++常用数据类型及其操作详解

目录 一.              VC常用数据类型列表 二.              常用数据类型转化 2.1数学类型变量与字符串相互转换 2.2 CString及string,char *与其他数据类型的转换和操作 ●CString,string,char*的综合比较 ●数学类型与CString相互转化 ●CString与char*相互转换举例

贝壳紫铃专栏 735

Windows 11 系统部署 OpenClaw 完整指南:从零到一的 AI 助手搭建

OpenClaw(昵称“小龙虾”)是一款开源 AI 代理工具,定位为“AI 指挥官”,能够接收指令、调用工具并自动化处理任务。它支持对接国内外多款大模型,所有数据本地存储,兼顾实用性与安全性。本文将详细介绍在 Windows 11 系统上部署 OpenClaw 的完整流程。OpenClaw 在 Windows 11 上的部署虽然有一定技术门槛,但按照本文的步骤操作,大多数用户都能顺利完成安装。环境准备是基础:确保 Node.js ≥22 版本,使用管理员权限操作安装方式灵活选择。

weixin_41484939的博客 800

【tio-websocket】15、学习tio的第1步—tio-study

tio-study 是用于学习 t-io 的示范工程,tio-study 是入门 t-io 最好的方式!tio-study 工程演示的是一个典型的 TCP 长连接应用工程,分为 server(服务端) 和 client(客户端) 工程,server 和 client 共用 common(公共模块) 工程

JACKAL 1万+

VC中常用的数据类型

ATOM     原子(原子表中的一个字符串的参考) BOOL     布尔变量 BOOLEAN     布尔变量 BYTE     字节(8位) CCHAR     Windows 字符 CHAR     Windows字符 COLORREF    红、绿、蓝(RGB)彩色值(32位) Const     变量,该变量的值在执行期间保持为常量 CRITICAL_SECTION  

贝壳紫铃专栏 1054

Google Earth Engine(GEE)——使用归一化燃烧指数 (NBR) 绘制地表烧伤严重程度图

归一化燃烧指数(Normalized Burn Ratio, NBR)是一种遥感指标,用于评估野火或烧伤地面后的植被恢复情况。NBR能增强较大范围的火灾区域,如大于200公顷。它是通过比较远红外波段 (SWIR) 和近红外波段 (NIR) 的反射率来计算的。SWIR波段测量烧伤地面的反射率,NIR波段测量没有受到烧伤影响的植被的反射率。NBR的计算公式为:NBR =(NIR-SWIR)/(NIR + SWIR)。其中,NIR为近红外波段,SWIR为短波红外波段。

此星光明博客 3464

VC++常用数据类型及其操作详解(非常经典,共同分享)

友情提示:为了方便你更好的学习和阅读,也更好的体现尊重原创作者的劳动成果,请您直接查看转载原本链接:http://snailflying.blog.hexun.com/8219350_d.html===================================================================VC++常用数据类型及其操作详解一.VC常用数据类型列表二.常用数据类

阳光岛主 2万+

YOLOv10改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

本文记录的是基于MobileNet V3的YOLOv10目标检测轻量化改进方法研究。的模型结构是通过得来的,其中的基础模块结合了的深度可分离卷积、的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意力模块,使模型在性能、效率和灵活性方面都具有显著的优势。本文在替换骨干网络中配置了原论文中的small和large2种模型,以满足不同的需求。

Limiiiing的博客 514

51单片机入门指南-基于STC89C52(持续更新)

一、环境介绍 编程IDE: keil5 单片机型号: STC89C51/52 开发板: 普中科技的开发板 完整PDF资源下载地址:https://download.youkuaiyun.com/download/xiaolong1126626497/19785856 二、51单片机开发手册介绍 2.1 前言 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最.

8798

C编程注意32位机器和64位机器的差别及unsigned和signed

1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统,64bit软件的基础上的。C/C++ 32位机器和64位机器 差异问题总结 跨平台 移植问题 语言编程需要注意的64位和32机器的区别#include < stddef.h> OS versi

樊茂林的博客 8461

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 269

【前端进阶】-TypeScript高级类型 | 交叉类型、索引签名类型、映射类型

>博主主页👉🏻[蜡笔雏田学代码](https://blog.youkuaiyun.com/xuxuii?spm=1011.2415.3001.5343) >专栏链接👉🏻[【TypeScript专栏】](https://blog.youkuaiyun.com/xuxuii/category_11979920.html) >上篇文章讲解了TypeScript部分高级类型 >详细内容请阅读如下:🔽 >[【前端进阶】-TypeScript高级类型 | 类的初始化、构造函数、继承、成员可见性](https://blog.csdn

xuxuii的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TypeScript 高级类型:联合类型、交叉类型与映射类型

联合类型是 TypeScript 中一种非常实用的高级类型,允许一个值可以是多种类型之一。在使用联合类型时,操作符将多个类型组合在一起。联合类型常用于定义一个变量或函数参数能够接收不同类型的值。映射类型是 TypeScript 中的一种高级类型,用于根据现有类型创建新的类型。它通过对已有类型的每个属性进行变换,生成一个新类型。常见的映射类型包括ReadonlyPartial和Record。通过本文的学习,我们了解了 TypeScript 中的三种常用高级类型:联合类型、交叉类型和映射类型。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 2746

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TS类型说明,类型推断,类型总览,常用类型与语法

string 声明类型时首字母不能大写类型声明之后填写非该类型code会报错函数demo定义传参为x,y时则不能多传,和少传,否则报错在 : 后也可以写字⾯量类型,不过实际开发中⽤的不多(了解)这里的b:类型定义为100则后续使用时候只能为100类型。

ytpedancerow的博客 2012

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

动态类型、静态类型和强类型、弱类型的区别

编程语言一般分为动态类型、静态类型和强类型、弱类型,例如Java是静态、强类型编程语言,而JavaScript是动态、弱类型编程语言。 一、动态类型与静态类型 动态类型语言是运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。例如:JavaScript、Python、PHP。 优点:方便阅读,不需要...

is_Javaer的博客 6823

Python 中的复合类型总结:序列类型、映射类型与集合类型

Python数据类型操作摘要 序列类型包括列表(可变)、元组(不可变)和range对象。列表支持增删改查操作,元组因不可变性可哈希,适合作为字典键。通用序列操作包含成员检测、切片、拼接等。 映射类型主要为字典,使用键值对存储数据,键需可哈希。支持查找、更新、删除等操作,并保留插入顺序。字典可通过多种方式创建,包括字面量、推导式和构造器。 集合类型分为set(可变)和frozenset(不可变),用于存储唯一元素。支持集合运算如并集、交集等。set支持增删操作,而frozenset可作为字典键。集合操作包括成

2301_78494402的博客 1672

TypeScript 中的类型推导与类型保护:让类型更加精准

除了typeof和instanceof,你还可以创建自定义的类型保护函数,通过类型谓词来缩小类型范围。类型谓词是指返回is的类型保护函数,TypeScript 根据这个函数的返回值推导出变量的类型。// TypeScript 知道 animal 是 Dog 类型} else {// TypeScript 知道 animal 是 Cat 类型在这个例子中,isDog函数是一个类型保护函数,它通过检查animal是否具有bark方法来确定animal是否为Dog类型。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1657

Python复合类型之序列类型、映射类型和集合类型总结

Python提供了丰富多样的复合类型,主要包括:​​ 序列类型​​:列表(list):可变有序集合元组(tuple):不可变有序集合字符串(str):字符序列映射类型​​:字典(dict):键值对集合集合类型​​:集合(set):唯一元素的无序集合冻结集合(frozenset):不可变集合​​ 其他复合类型​​:字节数组(bytearray)内存视图(memoryview)NumPy数组等第三方库提供的扩展类型。

lvzlj的博客 1206

TypeScript 中的 any 类型,unknown 类型,never 类型

为了解决any类型“污染”其他变量的问题,TypeScript 3.0 引入了unknown类型。它与any含义相同,表示类型不确定,可能是任意类型,但是它的使用有一些限制,不像any那样自由,可以视为严格版的any。unknown跟any的相似之处,在于所有类型的值都可以分配给unknown类型。x = true;// 正确x = 42;// 正确// 正确上面示例中,变量x的类型是unknown,可以赋值为各种类型的值。这与any的行为一致。unknown类型跟any类型的。

qq_44376306的博客 2121

复合类型之序列类型、映射类型和集合类型

Python中的复合数据类型主要分为序列、映射和集合三大类。 序列类型(如列表、元组、字符串)是有序且可索引的; 映射类型(主要是字典)存储键值对,通过键快速访问值; 集合类型则包含唯一、无序的元素,主要用于成员测试和去重。 每种类型都有可变和不可变版本,适用于不同场景:列表适合动态数据,元组用于固定数据,字典处理关联数据,集合则用于快速查找和去重操作。理解这些类型的特点有助于在编程中选择合适的数据结构。

2401_83579783的博客 1155

C#、基元类型、引用类型和值类型

本篇主要介绍C#基元类型,以及引用类型和值类型的区别

qq_40950398的博客 1251

Scala 类型系统深入剖析:类型推断、高阶类型等

Scala 的类型系统是静态的,在编译时就会对类型进行检查。这不仅可以帮助开发者在早期发现错误,还能增强代码的可读性与维护性。Scala 类型系统支持多种类型,比如值类型、引用类型,以及类型参数化、类型推断、高阶类型等特性。这些特性共同作用,让开发者能够编写出更为抽象、通用且类型安全的代码。类型推断是 Scala 类型系统的一项核心特性,它允许编译器根据代码的上下文,自动推断出表达式的类型,从而减少显式类型声明。这一特性在函数式编程中特别有用,能够让代码更为简洁。

数字魔方操控师的博客 909

复合类型:序列类型、映射类型和集合类型总结

类型可变性有序性元素唯一性索引访问切片支持定义方式典型用途列表可变有序不唯一访问支持[1, 2, 3]存储可变数据序列元组不可变有序不唯一访问支持(1, 2, 3)存储不可变数据序列字符串不可变有序不唯一访问支持"hello"处理文本数据字典可变无序键唯一键访问不支持存储键值对集合可变无序唯一不可访问不支持{1, 2, 3}去重或集合运算固定集合不可变无序唯一不可访问不支持不可变的集合运算。

muzi9827的博客 893
上一篇: cs
下一篇: VC读写ini
running1221
博客等级 码龄19年 31粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值