平台:Win7 64 bit,Matlab R2014a(8.3)

  “Matlab”是“Matrix Laboratory” 的缩写,中文“矩阵实验室”,是强大的数学工具。本文侧重于Matlab的编程语言侧面,讲述Matlab的基本语法,以及用Matlab语言进行程序设计。值得一提的是,Matlab从R2014a版本开始支持中文语言了!

1.基本概念

Matlab默认启动后界面

Matlab有关的文件后缀

File Extension

Description

.m

MATLAB Code — A MATLAB script, function, or class.

.p

MATLAB P-Code — Protected function file.

.mat

MATLAB Data — Binary file that stores MATLAB variables.

.fig

MATLAB Figure.

.mdl, .slx

Simulink Model.

.mdlp, .slxp

Simulink Protected Model.

.mex

MATLAB MEX — Shared library files that can be dynamically loaded into MATLAB. The MEX-file extensions are platform-dependent.

参考Matlab R2014a帮助文档“MathWorks File Extensions”,搜索即可,下同。

命令行执行命令

  可以在命令行窗口(Matlab默认启后动界面的中间)中执行命令,除了运算公式外,关闭Matlab、改变当前文件夹、新建.m文件之类的都可以以命令形式执行,下面对最为常用的基本命令进行总结:

Class

Function

Description

Shutdown

exit, quit

Terminate MATLAB program

Search Path

pwd

Identify current folder

cd

Change current folder

dir, ls

List folder contents

type

Display contents of file

what

List MATLAB files in folder

path

View or change search path

which

Locate functions and files

Command History

clc

Clear Command Window

diary

Save Command Window text to file

Help

format

Set display format for output

help

Help for functions in Command Window

doc

Reference page in Help browser

iskeyword

Determine whether input is MATLAB keyword

WorkSpace

clear

Remove items from workspace, freeing up system memory

clf

Clear current figure window

pack

Consolidate workspace memory

who

List variables in workspace

whos

List variables in workspace, with sizes and types

save

Save workspace variables to file

load

Load data from MAT-file into workspace

Other

disp

Display text or array

display

Display text or array (overloaded method)

tic, toc

Start stopwatch timer(Read elapsed time from stopwatch)

上面所有函数都可以用“help funcName”或“doc funcName”命令查看帮助,参考Matlab R2012a帮助文档“MATLAB/Functions”。

当前文件夹(Current Folder)和搜索路径(Search Path):

  Matlab之所以强大,很重要的原因是它实现了很多数学算法,也就是有一个庞大的函数库。和其他编程语言一样,这些函数以实现文件或源文件形式存在(.m,.p,.mex等)。在我们执行命令(或者说是运行m code)时,例如“y=sin(x)”,Matlab需要搜索“sin”,这就是在“当前文件夹”和“搜索路径”中进行的。Matlab以“文件名”进行搜索,所以要求函数(Main Function)等名子和文件名相同。

  “当前文件夹”就是程序员的工作文件夹,里面有我们写的M代码,在上图Matlab默认启动后界面中“当前文件夹”如红色框所示,其内容可以在左侧浏览。初用Matlab的人可能遇到过这个问题:打开一个.m文件,点击“运行”按钮,出现如下提示(如果你的Matlab版本不是最新的,那就是英语提示):

  这是因为当我们点“运行”(或快捷键F5)时,其实相当于在命令行执行命令运行文件,Matlab搜索当前文件夹和搜索路径,但没找到。

要设置添加搜索路径,可以在菜单“主页 >> 环境 >> 设置路径”中进行(也可以用命令形式):

工作区(WorkSpace):

  “工作区”类似于栈,是运行Matlab命令(或程序)时在内存产生变量的集合(也就是说它是一块内存区域),在Matlab默认启动后界面中显示在右侧。在“工作区”窗口显示的所有变量,可以双击查看其内容,也可以修改或删除。工作区分基本工作区(Base Workspace)和函数工作区(Function Workspace),函数工作区一般在函数调用过程中产生,我们一般接触的就是基本工作区。基本工作区中的变量在关闭Matlab前都不会自动清除,除非用clear命令,所以如果想让程序不依赖于历史数据的话,最好在运行程序前执行“clear all”命令。参考Matlab R2014a帮助文档“Base and Function Workspaces”。

M脚本文件

  所有可以在命令行窗口中输入的命令都可以出现在.m文件中,这里的所谓脚本文件就是我们通常说的Matlab程序。关于Matlab程序有几个最为基本的点需要知道:以“%”开头的行是注释;语句后面加“;”可以让Matlab执行语句但不输出结果;一行代码太长写不下用“...”续行;Matlab程序一般是解释执行,所以有些错误在执行时才会报告。

2.基本语法

  首先来看Matlab的符号表(参考Matlab R2014a帮助文档“Symbol Reference”):

Name

Symbol

Description

Asterisk

*

Filename Wildcard

At

@

Function Handle Constructor

Class Folder Designator

Colon

:

Numeric Sequence Range(step)

Indexing Range Specifier

Conversion to Column Vector

Preserving Array Shape on Assignment

Comma

,

Row Element Separator

Array Index Separator

Function Input and Output Separator

Command or Statement Separator

Curly Braces

{ }

Cell Array Constructor

Cell Array Indexing

Dot

.

Decimal Point

Structure Field Definition

Object Method Specifier

Dot-Dot

..

Parent Folder

Dot-Dot-Dot (Ellipsis)

Line Continuation

Entering Long Strings

Defining Arrays

Dot-Parentheses

.( )

Dynamic Structure Fields

Exclamation Point

!

Shell Escape

Parentheses

( )

Array Indexing

Function Input Arguments

Percent

%

Single Line Comments

Conversion Specifiers

Percent-Brace

%{ %}

Block Comments

Plus

+

Designate the names of package folders

Semicolon

;

Array Row Separator

Output Suppression

Command or Statement Separator

Single Quotes

‘ ’

Character and String Constructor

Space Character

Space

Row Element Separator

Function Output Separator

Slash and Backslash

/ \

Separate the elements of a path or folder string

Square Brackets

[ ]

Array Constructor

Concatenation

Function Declarations and Calls

Tilde

~

Not Equal to

Logical NOT

Argument Placeholder

  下图清晰的说明了Matlab的基本数据类型(类)(取自Matlab R2014a帮助文档“Fundamental MATLAB Classes”),其中double是默认数据类型字符串用单引号‘’

  Matlab是高级动态语言,变量(对象)在使用之前不需要声明,标识符的第一次出现视为变量的创建,标识符由字母开头接字母数字或下划线的不超过63个字符组成。一个标识符只是一个引用,它可以指向任意类型,比如执行“a=1”后,a作为一个名字指向double型变量,再执行“a=’hello’”后,a又指向一个字符串变量,原来的double变量因为不再引用而进入垃圾回收,这和Python类似。

  对于逻辑类型(布尔类型),和C语言类似,Matlab将非 0 数看做 true0 看做 false,Matlab将逻辑型输出为 0 和 1

  Matlab号称是矩阵实验室,除了函数句柄和多维数组外,每个变量都看做是矩阵(二维数组),标量被看做1x1矩阵,一维数组被看做1xN或Nx1矩阵,Matlab支持将矩阵作为整体进行运算。矩阵的行元素间用空格或逗号“,”分隔列元素间用回车或分号“;”分隔矩阵用中括号“[]”表示索引数组用小括号“()”从1开始,多维数组各维索引用逗号隔开),如下例所示:

  Matlab内置了一些常量或约定名字(参考Matlab R2014a帮助文档“Special Values”、Matlab R2012a帮助文档“MATLAB/Functions/Mathematics/Math Constants”):

Name

Description

eps

Floating-point relative accuracy

i, j

Imaginary unit

Inf

Infinity

NaN

Not-a-Number

pi

Ratio of circle's circumference to its diameter

intmax (intmin)

Largest(Smallest) value of specified integer type

realmax (realmin)

Largest positive(Smallest positive normalized) floating-point number

ans

Most recent answer (variable)

  Matlab基本算符和表达式(参考Matlab R2014a帮助文档“Operators and Elementary Operations”、Matlab R2012a帮助文档“MATLAB/User’s Guide/Programming Fundamentals/Language/Program Components/Operators”、《MATLAB R2011a教程》第3章p130、p138、p139):

Class

Description

Array operator

Matrix operator

Arithmetic

Addition

+

+

Subtraction

-

-

Multiplication

.*

*

Right(Left) division

./(.\)

/(\)

Power

.^

^

Transpose

.’

(Complex conjugate transpose)

Relational

Less than

 

Less than or equal to

<=

 

Greater than

 

Greater than or equal to

>=

 

Equal to

==

 

Not equal to

~=

 

Logical

And

&

 

Or

|

 

Not

~

 

Xor

xor

 

Bit-Wise

Bit-and

bitand

 

Bit-or

bitor

 

Bit-xor

bitxor

 

Short-Circuit

And

&&

 

Or

||

 

其中,“数组运算”指的是两个尺寸相同(行数列数相同)数组(或一个是标量)逐个元素之间进行运算得到尺寸相同的数组作为结果,“矩阵运算”则是按照数学上矩阵的运算法则运算。下面是一些例子:

其中,a、b、c 都是double类型,l 是Logical类型(布尔类型数组)。

  Matlab和其他大多数语言相同,有如下控制流(参考Matlab R2014a帮助文档“Control Flow”),Matlab代码是Pascal风格的,需要以end结尾:

Class

Control-Flow

Syntax

Remarks

Conditional Statements

if-else

if expression

statements

elseif expression

statements

else

statements

end

switch-case

switch switch_expression

case case_expression

statements

case case_expression

statements

...

otherwise

statements

end

only one case(or otherwise) statement will be executed

Loop Control Statements

for

for index = values

program statements

:

end

break, continue

parallel-for

parfor loopvar = initval:endval; statements; end

parfor (loopvar = initval:endval, M); statements; end

while

while expression

statements

end

break, continue

Other

pause

pause

pause(n)

pause on

pause off

pause query

state = pause('query')

oldstate = pause(newstate)

return

return

return to the invoking function or to the keyboard

try-catch

try

statements

catch exception

statements

end

assert

assert(expression)

assert(expression, 'msgString')

assert(expression, 'msgString', value1, value2, ...)

assert(expression, 'msgIdent', 'msgString', value1, value2, ...)

warning

warning('message')

warning('message', a1, a2,...)

warning('message_id', 'message')

warning('message_id', 'message', a1, a2, ..., an)

s = warning(state, 'message_id')

s = warning(state, mode)

error

error('msgIdent', 'msgString', v1, v2, ..., vN)

error('msgString', v1, v2, ...)

error('msgString')

error(msgStruct)

input

result = input(prompt) (displays the prompt string on the screen, waits for input from the keyboard, evaluates any expressions in the input, and returns the result.)

str = input(prompt,'s') (returns the entered text as a MATLAB string, without evaluating expressions.)

keyboard

keyboard (when placed in a program .m file, stops execution of the file and gives control to the keyboard.)

3.函数

  Matlab的函数以M函数文件(后缀.m)形式存在,主函数(Main Function,这里主函数和C语言主函数不同,它指该函数文件中第一个定义的函数,可以理解为文件的对外接口)名要和文件名相同,一个主函数的例子如下(文件“rank.m”,位于“C:\Program Files\MATLAB\R2014a\toolbox\matlab\matfun\”):

 function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps. s = svd(A);
if nargin==
tol = max(size(A)') * max(s) * eps;
end
r = sum(s > tol);

  上面文件首行以function开头的称为函数声明行(function declaration line),紧接一行注释称为H1行(用作lookfor指令),H1行及之后的连续注释称为在线帮助文本(help text,用作help指令),再之后的注释称为编写和修改记录(上面例子中没有,用作软件归档管理),之后是函数体。当然,除函数声明和函数体外其他都是可选的。

  除主函数(main function)外,还有局部函数(Local functions),它定义在M函数文件里的除第一个位置外的地方(所以,它只能依附在主函数文件中,不能出现在M脚本文件中),它只在该文件内可见,下面是一个例子(取自Matlab R2014帮助文档“Local Functions”,文件“mystats.m”):

 function [avg, med] = mystats(x)
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);
end function a = mymean(v,n)
% MYMEAN Example of a local function. a = sum(v)/n;
end function m = mymedian(v,n)
% MYMEDIAN Another example of a local function. w = sort(v);
if rem(n,) ==
m = w((n + )/);
else
m = (w(n/) + w(n/ + ))/;
end
end

  另外,还有嵌套函数(Nested Functions),顾名思义,它定义在别的函数内,如下例子(取自Matlab R2014帮助文档“Nested Functions”,文件“parent.m”):

 function parent
disp('This is the parent function')
nestedfx function nestedfx
disp('This is the nested function')
end end

嵌套函数和其他函数的区别是,它可以使用包含它的父函数的变量,也就是说,它可以使用除了参数及在函数内部定义的变量之外的变量,这涉及函数工作区(Function Workspace)的概念,前面说过有个基本工作区,函数调用时产生函数工作区,见例子。

  当前文件夹里有两个文件:abc.m,f.m,f.m是M函数文件,abc.m是M脚本文件,其内容如下:

 % f.m
function [ out ] = f( x )
out = x^+;
end
 % abc.m
a = ;
b = ;
c = [ ];
d = f(a);
d

运行abc.m后工作区如下(基本工作区):

在f.m中设置如下断点(第三行红点):

再运行abc.m,程序停在断点处,此时工作区和调试界面如下:

我们可以类比C语言的函数调用栈来理解函数工作区。想要跨越函数工作区传递变量可以用 global 关键字声明全局共享变量,要在函数内部定义类似C语言的 static 变量,使用 persistent 关键字声明变量

  函数句柄(function_handle)类似于C语言的函数指针,它用“@”来创建,如下是一个例子(接上面):

这样我们在调用函数时就可以这样写:

b=fh(a)

有了函数句柄,我们就可以创建匿名函数(Anonymous Functions):

sqr = @(x) x.^;
a = sqr();

  利用narginnargout可以实现以不同于函数定义的参数和返回值个数调用函数,例子如下(取自Matlab R2014帮助文档):

 % file: addme.m
function c = addme(a,b)
switch nargin
case
c = a + b;
case
c = a + a;
otherwise
c = ;
end
 % file: subtract.m
function [dif,absdif] = subtract(y,x)
dif = y - x;
if nargout >
disp('Calculating absolute value')
absdif = abs(dif);
end

  利用vararginvarargout可以实现可变参数和返回值列表,例子如下(取自Matlab R2014帮助文档):

 % file: varlist.m
function varlist(varargin)
fprintf('Number of arguments: %d\n',nargin);
celldisp(varargin)
 % file: sizeout.m
function [s,varargout] = sizeout(x)
nout = max(nargout,) - ;
s = size(x);
for k=:nout
varargout{k} = s(k);
end

  Matlab函数的参数只是个符号,它本身可以是任何类型,可以是标量或向量或矩阵,可以在函数内部利用一些内置指令来得到参数个数类型等信息,这就是说,Matlab的函数本身是多态或是重载的。为方便进行程序设计,Matlab任然支持显示的函数重载,参考Matlab R2014a帮助文档“Types of Functions”、Matlab R2012a帮助文档“Matlab/Getting Started/Programming/Scripts and Functions/Types of Functions”。

4.矩阵及矩阵化编程

矩阵的创建(参考Matlab R2014a帮助文档“Array Creation and Concatenation”、《MATLAB R2011a教程》第3章p124):

Function

Description

a:b, a:inc:b

Generating a Numeric Sequence(row vector)

ones

Create a matrix or array of all ones

zeros

Create a matrix or array of all zeros

eye

Create a matrix with ones on the diagonal and zeros elsewhere

accumarray

Distribute elements of an input matrix to specified locations in an output matrix, also allowing for accumulation

diag

Create a diagonal matrix from a vector

magic

Create a square matrix with rows, columns, and diagonals that add up to the same number

rand

Create a matrix or array of uniformly distributed random numbers

randn

Create a matrix or array of normally distributed random numbers and arrays

randperm

Create a vector (1-by-n matrix) containing a random permutation of the specified integers

矩阵维度信息(参考Matlab R2014a帮助文档“Array Dimensions”):

Function

Description

length

Length of vector or largest array dimension

ndims

Number of array dimensions

numel

Number of array elements

size

Array dimensions

isempty

Determine whether array is empty([ ])

isscalar

Determine whether input is scalar(1x1)

iscolumn

Determine whether input is column vector(Nx1)

isrow

Determine whether input is row vector(1xN)

isvector

Determine whether input is vector

ismatrix

Determine whether input is matrix

矩阵元素索引(indexing,参考Matlab R2014a帮助文档“Indexing”、《MATLAB R2011a教程》第3章p125):

  1. 全下标访问:A(a,b),a、b可以是标量、向量,“:”索引该维度所有值,“a:end”从a到该维度最大值;
  2. 单下标访问:A(a),a可以是标量、向量、矩阵,对a的每个元素把A按列优先索引形成和a尺寸相同矩阵,“:”将A按列优先得到列向量;
  3. 逻辑标示法:A(L),L是和A尺寸相同的逻辑矩阵,索引出L为1(true)对应的A的元素。

矩阵的操纵(参考Matlab R2014a帮助文档“Sorting and Reshaping Arrays”、《MATLAB R2011a教程》第3章p127):

Function

Description

diag

Get diagonal elements or create diagonal matrix

repmat

Replicate and tile array

reshape

Reshape array

flipud

Flip array up to down

fliplr

Flip array left to right

rot90

Rotate array 90 degrees

[ ], =[ ]

Empty array(delete)

[a, b], [a; b]

Concatenate arrays horizontally(vertically)

矩阵索引例子(《MATLAB R2011a教程》第3章p125 例3.2-6):

A=zeros(,)
A(:)=: A = A = A(,)
A() ans = ans = A(:,[,])
A([,,,]') ans = ans = A(:,:end) ans = A(,::)=[-,-,-] A = - - - B=A([,,,],[,,] ) B = - - -
- - -
- - - L=A<
A(L)=NaN
L = A =
NaN
NaN NaN NaN

矩阵操纵例子(《MATLAB R2011a教程》第3章p127 例3.2-7、3.2-8):

a=:
A=reshape(a,,)
A=reshape(A,,) a = A = A = b=diag(A)
B=diag(b) b = B = D1=repmat(B,,) D1 = D1([,],: )=[ ] D1 =
A=reshape(:,,)  

A =

B=flipud(A) 

B =

C=fliplr(A)    

C =

D=rot90(A,)

D =

矩阵化编程

  矩阵的逻辑标示法索引方式,和前面提到的算符和表达式的“数组运算”方式结合可以产生强大的“矩阵化”编程方式,用这种方式替代循环结构不仅可以简化代码,还可以大大提高代码执行效率,例子如下。

  程序要计算下面的函数:

其中theta在二维下为10/(7*pi*h^2),函数图像如下所示(类高斯函数):

下面比较普通循环实现和矩阵实现的效率差别:

% file: w1.m
function [ out ] = w1(r, h)
if nargin==
h = ;
end
if <=r && r<h
q = r/(h/);
theta = /(*pi*h^);
if q<=
out = theta* (-1.5*q^+0.75*q^);
else
out = theta* (0.25*(-q)^);
end
else
out = ;
end
end
% file: w2.m
function [ out ] = w2(r, h)
if nargin==
h = ;
end
theta = /(*pi*h^);
q = r./(h/);
R = <=r & r<h;
W = q<=;
out = zeros(size(r));
L = R & W;
ql = q(L);
out(L) = theta* (-1.5*ql.^+0.75*ql.^);
L = R & ~W;
ql = q(L);
out(L) = theta* (0.25*(-ql).^);
end
% file: abc.m

inc = 0.005;
x = -:inc:;
y = x;
t = []; % 循环版本
tic;
Z = zeros(numel(x),numel(y));
for i=:numel(x)
for j=:numel(y)
Z(i,j) = w1((x(i)^+y(j)^)^0.5);
end
end
t = [t,toc];
disp('循环版本时间'); disp(t()); % 矩阵版本
tic;
[X,Y] = meshgrid(x,y);
D = (X.^+Y.^).^0.5;
Z = w2(D);
t = [t,toc];
disp('矩阵版本时间'); disp(t()); disp('加速比为'); disp(t()/t());
% 绘制时间图
figure;
bar(t,0.2);

运行结果如下:

>> abc
循环版本时间
1.9316 矩阵版本时间
0.0462 加速比为
41.8445

矩阵化编程的一般思路是利用数学上矩阵运算规则、矩阵的数组运算以及bsxfun函数,必要时辅以矩阵操纵。

字符串,Cell数组,Table,Struct

  字符串,Cell数组,Table,Struct本质上都是数组。字符串的元素是char;Cell数组的元素是cell,cell相当于一个容器,其中可以存任意类型,如double型矩阵,字符串,甚至是cell,cell 的内容用{}提取;Table有点像数据库的表;Struct类似于C语言的结构体。请读者参考Matlab R2014a帮助文档“Fundamental MATLAB Classes”。

5.总结及进一步学习

  1. 要快速入门Matlab,参考Matlab R2014a帮助文档“Matlab/Getting Started with MATLAB”、Matlab R2012a帮助文档“Matlab/Getting Started”;
  2. Matlab的符号表,参考Matlab R2014a及R2012a帮助文档“Symbol Reference”;
  3. 要查看Matlab所有关键字,请用iskeyword指令(不要任何参数);
  4. Matlab的基本数据类型,参考Matlab R2014a及R2012a帮助文档“Fundamental MATLAB Classes”;
  5. Matlab基本算符和表达式,参考Matlab R2014a帮助文档“Operators and Elementary Operations”、Matlab R2012a帮助文档“MATLAB/User’s Guide/Programming Fundamentals/Language/Program Components/Operators”、《MATLAB R2011a教程》第3章p130、p138、p139;
  6. Matlab控制流,参考Matlab R2014a及R2012a帮助文档“Control Flow”;
  7. Matlab函数,参考Matlab R2014a帮助文档“Types of Functions”、Matlab R2012a帮助文档“Matlab/Getting Started/Programming/Scripts and Functions/Types of Functions”;
  8. 要查看Matlab所有指令(函数),参考Matlab R2014a及R2012a帮助文档“Matlab/Functions”。

  进一步的学习内容可能包括Matlab面向对象编程(类)、GUI编程、Simullink等。我最近有可能会再发一篇“Matlab绘图基础”,敬请期待。

参考文献:

  1. 《MATLAB R2011a教程》(张志涌等,北京航空航天大学出版社,2011),第1、3、6章,附录A;
  2. Matlab R2012a帮助文档,“MATLAB/Getting Started”,“MATLAB/User Guides”,“MATLAB/Functions”(在线版本);
  3. Matlab R2014a帮助文档,“MATLAB/Language Fundamentals”,“MATLAB/Programming Scripts and Functions”(在线版本)。

Matlab编程基础的更多相关文章

  1. 数字图像处理笔记与体会(一)——matlab编程基础

    最近开始学习数字图像处理,使用matlab实现,下面我就来记录笔记和体会,一方面是给大家提供参考,另一方面是防止我忘记了. 复习一下: 1.数字图像是用一个数字矩阵来表示的,数字阵列中的每个数字,表示 ...

  2. MATLAB —— 编程基础

    字符串 abs —— 输出字符串ascii码 strvcat —— 把多个字符串横向连接成长字符串 fprintf —— 把格式化的文本写到文件中或显示屏上 int2str —— 整数转换成字符串 n ...

  3. 一些matlab教程资源收藏,使用matlab编程的人还是挺多的

    Matlab教程专题资源免费下载整理合集收藏 <MATLAB从入门到精通>高清文字版[PDF] 103.9MB 简体中文 <矩阵实验室>(Mathworks.Matlab.R2 ...

  4. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  5. Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  6. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  7. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

  8. T-Sql编程基础

    T-sql编程 入门小游戏 T-sql编程基础,包括声明变量,if判断,while循环,以及使用一些基本函数. 记得在学校的时候,写过一个二人对打的文字输出游戏. 上代码 alter proc usp ...

  9. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

随机推荐

  1. 运维之netstat

    实用命令实例   1. 列出所有端口 (包括监听和未监听的)   列出所有端口 netstat -a # netstat -a | more Active Internet connections ( ...

  2. Fibonacci(斐波那契)递归实现。容易看懂

    #include<iostream>using namespace std;int fibonacci(int n){if(n<=0) return 0; else if(n==1) ...

  3. C++ 11 lambda

    转载:http://www.cnblogs.com/kedebug/p/3224561.html lambda 表达式的简单语法如下:[capture] (parameters) -> retu ...

  4. Linux学习 :Uboot, Kernel, 根文件系统初步分析

    1.U-Boot启动内核的过程可以分为两个阶段: 1)第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 2)第二阶段的功能 初始化本阶段使用的 ...

  5. 一个Java递归删除目录的方法

    public static void delDir(File f) { // 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空. if(f.isDirectory() ...

  6. 使用CSS3动画模拟实现小球自由落体效果

    使用纯CSS代码模拟实现小球自由落体效果: html代码如下: <div id="ballDiv"> <div id="ball">&l ...

  7. web前端基础篇⑩

    1.960栅格式布局法屏幕分辨率为1024*768.采用接 main宽为960px的布局方式12列式:每格60px 间距20px 3 6 3版 三格式布局(最常用)16列式:每格40px 间距20px ...

  8. <input type="file">火狐兼容

    <input type="file">放着a标签下火狐不兼容 <a href=""><input type="file& ...

  9. 网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档,视频项目

    小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心: ...

  10. 我们的html

    http://files.cnblogs.com/files/eeroom/mac-Bootstrap.rar http://files.cnblogs.com/files/eeroom/CSharp ...