楼主: pengming
1364 19

The Mata Book:A Book for Serious Programmers and Those Who Want to Be [推广有奖]

  • 6关注
  • 27粉丝

学科带头人

0%

还不是VIP/贵宾

-

威望
0
论坛币
175626 个
通用积分
220.4514
学术水平
66 点
热心指数
79 点
信用等级
76 点
经验
36544 点
帖子
466
精华
0
在线时间
2987 小时
注册时间
2006-1-8
最后登录
2024-4-19

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
able of contents

View table of contents >>

Acknowledgment
1 Introduction
1.1 Is this book for me?
1.2 What is Mata?
1.3 What is covered in this book
1.4 How to download the files for this book

2 The mechanics of using Mata
2.1 Introduction
2.2 Mata code appearing in do-files
2.3 Mata code appearing in ado-files
2.4 Mata code to be exposed publicly

3 A programmer's tour of Mata
3.1 Preliminaries
3.1.1 Results of expressions are displayed when not stored
3.1.2 Assignment
3.1.3 Multiple assignment

3.2 Real, complex, and string values
3.2.1 Real values
3.2.2 Complex values
3.2.3 String values (ASCII, Unicode, and binary)

3.3 Scalars, vectors, and matrices
3.3.1 Functions rows(), cols(), and length()
3.3.2 Function I()
3.3.3 Function J()
3.3.4 Row-join and column-join operators
3.3.5 Null vectors and null matrices

3.4 Mata's advanced features
3.4.1 Variable types
3.4.2 Structures
3.4.3 Classes
3.4.4 Pointers

3.5 Notes for programmers
3.5.1 How programmers use Mata's interactive mode
3.5.2 What happens when code has errors
3.5.3 The _error() abort function


4 Mata's programming statements
4.1 The structure of Mata programs
4.2 The program body
4.2.1 Expressions
4.2.2 Conditional execution statement
4.2.3 Looping statements
4.2.3.1 while
4.2.3.2 for
4.2.3.3 do while
4.2.3.4 continue and break

4.2.4 goto
4.2.5 return
4.2.5.1 Functions returning values
4.2.5.2 Functions returning void



5 Mata's expressions
5.1 More surprises
5.2 Numeric and string literals
5.2.1 Numeric literals
5.2.1.1 Base-10 notation
5.2.1.2 Base-2 notation

5.2.2 Complex literals
5.2.3 String literals

5.3 Assignment operator
5.4 Operator precedence
5.5 Arithmetic operators
5.6 Increment and decrement operators
5.7 Logical operators
5.8 (Understand this ? skip : read) Ternary conditional operator
5.9 Matrix row and column join and range operators
5.9.1 Row and column join
5.9.2 Comma operator is overloaded
5.9.3 Row and column count vectors

5.10 Colon operators for vectors and matrices
5.11 Vector and matrix subscripting
5.11.1 Element subscripting
5.11.2 List subscripting
5.11.3 Permutation vectors
5.11.3.1 Use to sort data
5.11.3.2 Use in advanced mathematical programming

5.11.4 Submatrix subscripting

5.12 Pointer and address operators
5.13 Cast-to-void operator

6 Mata's variable types
6.1 Overview
6.2 The forty variable types
6.2.1 Default initialization
6.2.2 Default eltype, orgtype, and therefore, variable type
6.2.3 Partial types
6.2.4 A forty-first type for returned values from functions

6.3 Appropriate use of transmorphic
6.3.1 Use transmorphic for arguments of overloaded functions
6.3.2 Use transmorphic for output arguments
6.3.2.1 Use transmorphic for passthru variables

6.3.3 You must declare structures and classes if not passthru
6.3.4 How to declare pointers


7 Mata's strict option and Mata's pragmas
7.1 Overview
7.2 Turning matastrict on and off
7.3 The messages that matastrict produces, and suppressing them

8 Mata's function arguments
8.1 Introduction
8.2 Functions can change the contents of the caller's arguments
8.2.1 How to document arguments that are changed
8.2.2 How to write functions that do not unnecessarily change arguments

8.3 How to write functions that allow a varying number of arguments
8.4 How to write functions that have multiple syntaxes

9 Programming example: n_choose_k() three ways
9.1 Overview
9.2 Developing n_choose_k()
9.3 n_choose_k() packaged as a do-file
9.3.1 How I packaged the code: n_choose_k.do
9.3.2 How I could have packaged the code
9.3.2.1 n_choose_k.mata
9.3.2.2 test_n_choose_k.do

9.3.3 Certification files

9.4 n_choose_k() packaged as an ado-file
9.4.1 Writing Stata code to call Mata functions
9.4.2 nchooseki.ado
9.4.3 test_nchooseki.do
9.4.4 Mata code inside of ado-files is private

9.5 n_choose_k() packaged as a Mata library routine
9.5.1 Your approved source directory
9.5.1.1 make_lmatabook.do
9.5.1.2 test.do
9.5.1.3 hello.mata
9.5.1.4 n_choose_k.mata
9.5.1.5 test_n_choose_k.do

9.5.2 Building and rebuilding libraries
9.5.3 Deleting libraries


10 Mata's structures
10.1 Overview
10.2 You must define structures before using them
10.3 Structure jargon
10.4 Adding variables to structures
10.5 Structures containing other structures
10.6 Surprising things you can do with structures
10.7 Do not omit the word scalar in structure declarations
10.8 Structure vectors and matrices and use of the constructor function
10.9 Use of transmorphic with structures
10.10 Structure pointers

11 Programming example: Linear regression
11.1 Introduction
11.2 Self-threading code
11.3 Linear-regression system lr*() version 1
11.3.1 lr*() in action
11.3.2 The calculations to be programmed
11.3.3 lr*() version-1 code listing
11.3.4 Discussion of the lr*() version-1 code
11.3.4.1 Getting started
11.3.4.2 Assume subroutines
11.3.4.3 Learn about Mata's built-in subroutines
11.3.4.4 Use of built-in subroutine cross()
11.3.4.5 Use more subroutines


11.4 Linear-regression system lr*() version 2
11.4.1 The deviation from mean formulas
11.4.2 The lr*() version-2 code
11.4.3 lr*() version-2 code listing
11.4.4 Other improvements you could make

11.5 Closeout of lr*() version 2
11.5.1 Certification
11.5.2 Adding lr*() to the lmatabook.mlib library


12 Mata's classes
12.1 Overview
12.1.1 Classes contain member variables
12.1.2 Classes contain member functions
12.1.3 Member functions occult external functions
12.1.4 Members—variables and functions—can be private
12.1.5 Classes can inherit from other classes
12.1.5.1 Privacy versus protection
12.1.5.2 Subclass functions occult superclass functions
12.1.5.3 Multiple inheritance
12.1.5.4 And more


12.2 Class creation and deletion
12.3 The this prefix
12.4 Should all member variables be private?
12.5 Classes with no member variables
12.6 Inheritance
12.6.1 Virtual functions
12.6.2 Final functions
12.6.3 Polymorphisms
12.6.4 When to use inheritance

12.7 Pointers to class instances

13 Programming example: Linear regression 2
13.1 Introduction
13.2 LinReg in use
13.3 LinReg version-1 code
13.4 Adding OPG and robust variance estimates to LinReg
13.4.1 Aside on numerical accuracy: Order of addition
13.4.2 Aside on numerical accuracy: Symmetric matrices
13.4.3 Finishing the code

13.5 LinReg version-2 code
13.6 Certifying LinReg version 2
13.7 Adding LinReg version 2 to the lmatabook.mlib library

14 Better variable types
14.1 Overview
14.2 Stata's macros
14.3 Using macros to create new types
14.4 Macroed types you might use
14.4.1 The boolean type
14.4.2 The Code type
14.4.3 Filehandle
14.4.4 Idiosyncratic types, such as Filenames
14.4.5 Macroed types for structures
14.4.6 Macroed types for classes
14.4.7 Macroed types to avoid name conflicts


15 Programming constants
15.1 Problem and solution
15.2 How to define constants
15.3 How to use constants
15.4 Where to place constant definitions

16 Mata's associative arrays
16.1 Introduction
16.2 Using class AssociativeArray
16.3 Finding out more about AssociativeArray

17 Programming example: Sparse matrices
17.1 Introduction
17.2 The idea
17.3 Design
17.3.1 Producing a design from an idea
17.3.2 The design goes bad
17.3.3 Fixing the design
17.3.3.1 Sketches of R_*x*() and S_*x*() subroutines
17.3.3.2 Sketches of class's multiplication functions

17.3.4 Design summary
17.3.5 Design shortcomings

17.4 Code
17.5 Certification script

18 Programming example: Sparse matrices, continued
18.1 Introduction
18.2 Making overall timings
18.2.1 Timing T1, Mata R=RR
18.2.2 Timing T2, SpMat R=RR
18.2.3 Timing T3, SpMat R=SR
18.2.4 Timing T4, SpMat R=RS
18.2.5 Timing T5, SpMat R=SS
18.2.6 Call a function once before timing
18.2.7 Summary

18.3 Making detailed timings
18.3.1 Mata's timer() function
18.3.2 Make a copy of the code to be timed
18.3.3 Make a do-file to run the example to be timed
18.3.4 Add calls to timer_on() and timer_off() to the code
18.3.5 Analyze timing results

18.4 Developing better algorithms
18.4.1 Developing a new idea
18.4.2 Aside
18.4.2.1 Features of associative arrays
18.4.2.2 Advanced use of pointers


18.5 Converting the new idea into code sketches
18.5.0.3 Converting the idea into a sketch of R_SxS()
18.5.0.4 Sketching subroutine cols_of_row()

18.5.1 Converting sketches into completed code
18.5.1.1 Double-bang comments and messages
18.5.1.2 // NotReached comments
18.5.1.3 Back to converting sketches

18.5.2 Measuring performance

18.6 Cleaning up
18.6.1 Finishing R_SxS() and cols_of_row()
18.6.2 Running certification

18.7 Continuing development

19 The Mata Reference Manual
A Writing Mata code to add new commands to Stata
A.1 Overview
A.2 Ways to structure code
A.3 Accessing Stata's data from Mata
A.4 Handling errors
A.5 Making the calculation and displaying results
A.6 Returning results
A.7 The Stata interface functions
A.7.1 Accessing Stata's data
A.7.2 Modifying Stata's data
A.7.3 Accessing and modifying Stata's metadata
A.7.4 Changing Stata's dataset
A.7.5 Accessing and modifying Stata macros, scalars, matrices
A.7.6 Executing Stata commands from Mata
A.7.7 Other Stata interface functions


B Mata's storage type for complex numbers
B.1 Complex values
B.2 Complex values and literals
B.3 Complex scalars, vectors, and matrices
B.4 Real, complex, and numeric eltypes
B.5 Functions Re(), Im(), and C()
B.6 Function eltype()

C How Mata differs from C and C++
C.1 Introduction
C.2 Treatment of semicolons
C.3 Nested comments
C.4 Argument passing
C.5 Strings are not arrays of characters
C.6 Pointers
C.6.1 Pointers to existing objects
C.6.2 Pointers to new objects, allocation of memory
C.6.3 The size and even type of the object may change
C.6.4 Pointers to new objects, freeing of memory
C.6.5 Pointers to subscripted values
C.6.6 Pointer arithmetic is not allowed

C.7 Lack of switch/case statements
C.8 Mata code aborts with error when C would crash

D Three-dimensional arrays (advanced use of pointers)
D.1 Introduction
D.2 Creating three-dimensional arrays

References
Author index
Subject index

首发,学习交流用,保护作者产权。

Mata Book_ A Book for Serious Programmers and Those Who Want to Be, The - Willia.pdf (13.13 MB, 需要: 2 个论坛币)

The Mata Book(azw3格式).rar (6.28 MB, 需要: 1000 个论坛币) 本附件包括:
  • The Mata Book_ A Book for Serio - William Gould.azw3


任意选择一本即可。

书中的数据: tmb.zip (34.8 KB) 本附件包括:
  • test_nchooseki.do
  • test.do
  • README.txt
  • n_choose_k.do
  • test_lr2.do
  • test_lr1.do
  • hello.mata
  • test_spmat1.do
  • lr1.mata
  • test_earthdistance.do
  • linreg2.mata
  • test_spmat2.do
  • test_linreg1.do
  • nchooseki.ado
  • spmat3.mata
  • spmat1.mata
  • n_choose_k.mata
  • test_spmat3.do
  • make_lmatabook.do
  • test_n_choose_k.do
  • earthdistance.mata
  • lr2.mata
  • linreg1.mata
  • test_linreg2.do
  • spmat2.mata


书中的材料在此下载:http://www.stata-press.com/data/tmb.html

正版书在此购买:http://www.stata-press.com/books/mata-book/





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Programmers Programmer Programme Program Serious

已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
tulipsliu + 5 + 5 + 5 + 5 精彩帖子
voodoo + 5 + 5 + 5 奖励积极上传好的资料,谢谢!
我的素质低 + 100 精彩帖子

总评分: 经验 + 100  论坛币 + 10  学术水平 + 5  热心指数 + 10  信用等级 + 10   查看全部评分

本帖被以下文库推荐

沙发
pengming 发表于 2018-3-25 08:22:00 |只看作者 |坛友微信交流群
好书从来都是为最需要的人准备的,5000币,价高,下载的同志就会学习,这样才能发挥材料的作用。

使用道具

藤椅
pengming 发表于 2018-3-25 08:26:13 |只看作者 |坛友微信交流群
书中的材料在此下载:http://www.stata-press.com/data/tmb.html
正版书在此购买:http://www.stata-press.com/books/mata-book/

使用道具

板凳
飞鸿惊鸿 发表于 2018-3-25 13:21:22 |只看作者 |坛友微信交流群
非原版PDF,是转换的版本,除了排版之外,其他方面都挺好

使用道具

报纸
pengming 发表于 2018-3-25 16:41:39 |只看作者 |坛友微信交流群
飞鸿惊鸿 发表于 2018-3-25 13:21
非原版PDF,是转换的版本,除了排版之外,其他方面都挺好
没有原版PDF,只有原版azw3格式的

使用道具

地板
飞鸿惊鸿 发表于 2018-3-25 18:59:28 |只看作者 |坛友微信交流群
pengming 发表于 2018-3-25 16:41
没有原版PDF,只有原版azw3格式的
azw3如果排版是出版社纸质书的排版的话,我其实更喜欢azw3格式的书。因为只需要下载一个更加通用的阅读器就好。转的PDF对我这种稍微有点强迫症的人来说是个灾难。

使用道具

7
pengming 发表于 2018-3-27 10:56:37 |只看作者 |坛友微信交流群
飞鸿惊鸿 发表于 2018-3-25 18:59
azw3如果排版是出版社纸质书的排版的话,我其实更喜欢azw3格式的书。因为只需要下载一个更加通用的阅读器 ...
送你AZW3的文件

使用道具

8
飞鸿惊鸿 发表于 2018-3-27 13:56:18 |只看作者 |坛友微信交流群
pengming 发表于 2018-3-27 10:56
送你AZW3的文件
多谢多谢,我的邮箱是1247767751@qq.com。不胜感激

使用道具

9
pengming 发表于 2018-3-28 15:03:10 |只看作者 |坛友微信交流群
飞鸿惊鸿 发表于 2018-3-27 13:56
多谢多谢,我的邮箱是。不胜感激
已经发送至您邮箱,请查收!

使用道具

10
飞鸿惊鸿 发表于 2018-3-28 18:29:31 |只看作者 |坛友微信交流群
pengming 发表于 2018-3-28 15:03
已经发送至您邮箱,请查收!
邮件已收到,多谢楼主

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 12:06