matlab
#@author: gr
#@date: 2014-03-10
#@email: forgerui@gmail.com
一、common
1. 使用mex编译C语言
mex -c hello1.c
mex -c hello2.c
mex -O main.c hello1.obj hello2.obj
二、function
1. prctile
求分位数:b = Np + 0.5
如:求a=[1:5]的50分位数,b = prctile(a, 50), 可得b=3,计算如下:
b = 5 * 0.5 + 0.5 = 3
2. cat
- cat(2, A, B)相当于[A, B];
- cat(1, A, B)相当于[A; B].
3. cell
- X= C(s)使用这种"()"形式的返回的是cell类
- X = C{s}使用这种"{}"形式的返回的是cell中的内容
- A{1,1}(2,3:end)访问的是A中的第一个cell里面内容的第2行的第三个元素以后的所有元素
- A{1,3}.name访问的是A中的A{1,3}cell里面结构的name值
4. tic, toc
startT = tic
toc(startT)
5. cumsum
- 如果A是一个向量, cumsum(A) 返回一个向量,该向量中第m行的元素是A中第1行到第m行的所有元素累加和;
- 如果A是一个矩阵, cumsum(A) 返回一个和A同行同列的矩阵,矩阵中第m行第n列元素是A中第1行到第m行的所有第n列元素的累加和;
6. regexp
S = regexp('hello.c', '.', 'split');
filename = S{0};
7. find
index = find(I); //返回I中不为0的索引值
[i, j, v] = find(I > 5); //返回行i,列j,以及I(i, j)对应的值
8. exits
% 判断文件是否存在
if (~exits('trK.mat', 'file'))
% 判断变量是否存在
if (~exits('trK', 'var'))
9. isfield
%判断结构体中是否含有某成员
10. uigetfile
% 选择文件夹
data_path = uigetdir('./');
% 选择文件
[filename pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif', 'All Image Files'; '*.*', 'All Files'}, '选择一幅图片');
11. diag
% 1. 获取对角线上元素值组成一列,如果不是方阵,则以少的维数为准
> a = rand(5, 5)
a =
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
> b = diag(a)
b =
0.8147
0.2785
0.9572
0.7922
0.6787
% 2. 利用列组成一个对角矩阵, diag(b, k)
> c = diag(b, 0) % k > 0,则为主对角线上方一条对角线; 反之,k < 0
c =
0.8147 0 0 0 0
0 0.2785 0 0 0
0 0 0.9572 0 0
0 0 0 0.7922 0
0 0 0 0 0.6787
12. mean
% 1. 对行求均值 mean(A, 1); mean(A)
a =
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
> mean(a)
ans =
1 2 3 4 5
% 2. 对列求均值 mean(A, 2)