维基百科是更好的选择,因为连不上你选择了百度百科,你是在主动降低自己以及读者的生活标准和智识标准
- ones\zeros\eye向量的应用;函数size和length(返回矩阵中行和列中维数最大的那个)
- 冒号表达式的应用 1:2:1000
- matlab中数据是按照列来存储的。涉及到数据引用相关的问题N(2:4,2)的意义。
- matlab支持矩阵的拼接:把矩阵以行的形式进行拼接:[K,K]的形式是以行的形式进行拼接,[K;K]是按照列的形式进行拼接。
- L=(1:2:6;2 4 6)的结果。
- magic魔方数组
- m(3,2:end);
- linspace的使用生成等差数列logspace使用生成等比数列,reshape重新变形。
- 预定义的日期变量:date、clock、year、month、now、today有些不能单独用
- 常见函数:三角函数sin(pi/6)注意是弧度值。sin里面也可以是一个矩阵,对每一个函数做三角函数运算。反三角函数acos\acot\asin..etc。
直接用log是自然对数,log10 是以10为底的。abs绝对值。sqrt平方根。ceil天花板函数。floor地板函数,向着负无穷的方向。fix:朝着0进行元整
round:朝着最近的整数去元整。round:朝着最近的整数去接近。mod取模。rem也是取模的意思,对负数除法有些不同。conv:多项式相乘函数。max:
求最大值,min对应取最小值。实际是按照列来寻找的。给出的结果是一个行向量的形式。还有median取中位数,mean取得是平均值。sum是求和函数,
prod是求积函数。sum(X,DIM)dim表示到底是按照行来计算还是按照列来计算,1代表行2代表列。求积函数和求和函数用法一样。conv对多项式进行展开
例如conv([1 1],[1 1])表示对x+1的平方进行展开。[1 0 0 5 0 0 4][9 0 3 0 7 6]. - 复数,用i来表示虚部。可以用i和j来表示。real取实部,imag是取虚部。abs是求复数的模。abs(1+2j),求辅角是angle,取共轭虚数是直接加撇。
- cross是对矩阵做*,dot是对矩阵做点乘。compan(A)是求伴随矩阵,诶和数学中的伴随矩阵还是不是很一样的。inv是求逆矩阵,只有在行列式不等于0的时候可以取逆矩阵。
det是求行列式的值。rank是求矩阵的秩,满秩矩阵才有逆矩阵。eig是求矩阵的特征值。trace是求矩阵的迹(主对角线相加求和。) - std(x) 算出x的标准偏差。 x可以是一行的matrix或者一个多行matrix矩阵
如果只有一行,那么就是算一行的标准偏差,如果有多行,就是算每一列的标准偏差。
std(x,a)也是x的标准偏差但是a可以=0或者1.如果是0和前面没有区别,如果是1就是最后除以n,而不是n-1. (你参考计算标准偏差的公式,一般都用除以n-1的公式。)
std (x, a,b)这里a表示是要用n还是n-1,如果是a是0就是除以n-1,如果是1就是除以n。
b这里是维数,比如说
1 2 3 4
4 5 6 1
如果b 是1,就是按照行分,如果b是2就是按照列分
如果是三维的矩阵,b=3就按照第三维来分数据 - matlab 的pcolor是画图的,默认会少掉一行和一列,然后就相当于前两者x和y 是确认坐标的,第三者是给出颜色矩阵的。
下面有一个小例子
`
KK= repmat([0.1:0.1:4],40,1);
x = [1:1:40];
y = [1:1:40];
pcolor(x,y,KK);
colorbar;
- B = repmat(A,m,n)
B = repmat(A,[m n])
B = repmat(A,[m n p…])
这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(MxN)的矩阵B中,B矩阵的大小由MxN及A矩阵的内容决定,如果A是一个3x4x5的矩阵,有B = repmat(A,2,3)则最后的矩阵是6x12x5
例如:
B=repmat( [1 2;3 4],2,3)
B =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4
其结果变为4X6。
- eig Find eigenvalues and eigenvectors
返回矩阵的特征值和特征向量;
[V,D] = eig(A)
D是特征值
V特征向量
例如a=[1 2 3;4 5 6;7 8 9];[V,D]=eig(a)
结果:
V =
-0.2320 -0.7858 0.4082
-0.5253 -0.0868 -0.8165
-0.8187 0.6123 0.4082
D =
16.1168 0 0
0 -1.1168 0
0 0 -0.0000
* sum:sum(x,2)表示矩阵x的横向相加,求每行的和,结果是列向量。 而缺省的sum(x)就是竖向相加,求每列的和,结果是行向量. 调用格式:a=diag(x);
* axis一般用来设置axes的样式,包括坐标轴范围,可读比例等
axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 坐标轴设置
v = axis
axis auto
axis manual
axis tight
axis fill
axis ij
axis xy
axis equal
axis image
axis square
axis vis3d
axis normal 坐标轴刻度比例等
axis off
axis on 显示与否
axis(axes_handles,…) 根据axes设置
[mode,visibility,direction] = axis(‘state’) 返回当前axes属性
- diag:若x是m*n的矩阵,则a为x对角线元素组成的向量,且a的大小等于x较小的维数,即min(m,n)
若x是1*m的向量,则a为m*m的矩阵,该矩阵的对角线元素为x。 - flipud: 函数实现矩阵的上下翻转。
cumsum: 对一个矩阵进行累计求和,可以参考http://blog.sina.com.cn/s/blog_4eb23c8d01011rat.html
matlab的绘图教程:
%这是一个例子
x=0:0.01:2*pi;
y1=sin(x);
plot(x,y1,'-');
hold on
xlabel('x');
ylabel('u');
grid on
grid off %关闭网格,当然grid本身也可以做网格的切换
y2=cos(x);
plot(x,y2);
legend('xxxx','yuxuan');%用于插入对线的说明
PCA过程
1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。
2.计算B的协方差矩阵C:
- View Code
3.计算协方差矩阵C的特征值和特征向量。
C=V*S*V-1
S=
4.2248414 0 0 0
0 0.24224437 0 0
0 0 0.078524387 0
0 0 0 0.023681839
V=
0.36158919 0.65654382 -0.58100304 0.3172364
-0.082268924 0.72970845 0.596429220 -0.3240827
0.85657212 -0.17576972 0. 072535217 -0.47971643
0.35884438 -0.074704743 0.54904125 0.75113489
4.选取大的特征值对应的特征向量,得到新的数据集。
特征值是由大到小排列的,前两个特征值的和已经超过了所有特征值之和的97%。我们取前两个特征值对应的特征向量,得到一个4×2的矩阵M。令A’150×2=A150×4M4×2,这样我们就把150×4的数据A集映射成了150×2的数据集A’,特征由4个减到了2个。