MATLAB向量和矩阵的基本操作
矩阵的创建
(1) rand(m,n)创建m行n列的随机矩阵(每个元素的值在0到1之间)。
(2) zeros(m,n)创建m行n列的0矩阵。
(3) ones(m,n)创建m行n列的1矩阵
(4) eye(m)创建m行m列的对角元素是1,其余元素是0的对角矩阵。
(5)
randn:产生正态分布的随机数或矩阵的函数
randn:产生均值为0,方差σ^2 = 1,标准差σ = 1的正态分布的随机数或矩阵的函数。
用法:
Y = randn(n):返回一个n*n的随机项的矩阵。如果n不是个数量,将返回错误信息。
Y = randn(m,n) 或 Y = randn([m n]):返回一个m*n的随机项矩阵。
Y = randn(m,n,p,…) 或 Y = randn([m n p…]):产生随机数组。
Y = randn(size(A)):返回一个和A有同样维数大小的随机数组。
注意:由于产生的是随机数序列,这里所说的均值为0,只是说这写随机数的分布期望值为0,而不是说这个序列的平均值就一定为0。
当生成的数很多的时候才体现出使正态分布:
x=randn(10000000,1);
hist(x,1000);
(6) X = diag(v,k) 以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
矩阵的元素的获取
(1) A(x,y)表示第x行,第y列的元素的值
(2) A(x0:y0,x1:y1)表示第x0行到第y0行和第x1列到y1列的所有元素的值,返回值为原矩阵的子矩阵。
(3) A(x:y) 表示获取第一列的第x行到第y行元素的值,返回值是一个行向量。
(4) A(x)表示获取第一列第x行的值,返回值是一个元素。
矩阵的函数
(1)find(A的条件表达式) A为矩阵或向量 ,返回值为将每一列的尾和下一列的头拼接在一起的向量的下标值
举例:
x =
0.4218 0.7431 0.6948 0.4456 0.9597 0.5472 0.1966 0.7572
0.9157 0.3922 0.3171 0.6463 0.3404 0.1386 0.2511 0.7537
0.7922 0.6555 0.9502 0.7094 0.5853 0.1493 0.6160 0.3804
0.9595 0.1712 0.0344 0.7547 0.2238 0.2575 0.4733 0.5678
0.6557 0.7060 0.4387 0.2760 0.7513 0.8407 0.3517 0.0759
0.0357 0.0318 0.3816 0.6797 0.2551 0.2543 0.8308 0.0540
0.8491 0.2769 0.7655 0.6551 0.5060 0.8143 0.5853 0.5308
0.9340 0.0462 0.7952 0.1626 0.6991 0.2435 0.5497 0.7792
0.6787 0.0971 0.1869 0.1190 0.8909 0.9293 0.9172 0.9340
0.7577 0.8235 0.4898 0.4984 0.9593 0.3500 0.2858 0.1299
>> find(x>0.9)
ans =
2
4
8
23
41
50
59
69
79
(2) pow2(A) A为矩阵或者向量
A=
x1 x2
x3 x4
则pow2(A)=
2^x1 2^x2
2^x3 2^x4
(3) a*A a为元素,A为矩阵
A=
x1 x2
x3 x4
a*A=
a*x1 a*x2
a*x3 a*x4
(4) A为M*N矩阵,B为M*N矩阵
A*B为矩阵的乘法,A.*B是矩阵的点乘
举例:
x =
1 2
3 4
>> y=x
y =
1 2
3 4
>> x*y
ans =
7 10
15 22
>> x.*y
ans =
1 4
9 16
(5)poly(向量X),poly是向量X为跟的多项式的系数。
举例:
poly([1,2])
ans =
1 -3 2
得到f(x)=x^2-3^x+2的方程,1和2为根
(6)
poly2str(X,\’自变量名称\’)或者poly2str(X) X为向量
poly2sym(X,\’自变量名称\’)或者poly2str(X) X为向量 %实际计算时只能使用poly2sym
举例
>> poly2str([1,2,3,4,5],\’x\’)
ans =
x^4 + 2 x^3 + 3 x^2 + 4 x + 5
举例
>> t=poly2sym([1,2,3,4],\’x\’)
t =
x^3 + 2*x^2 + 3*x + 4
>> subs(t,1)
ans =
10
(7)subs(函数,{对应的变量},{替换值}) %将具体的值代入函数
>> f=x+y^2+z^3
f =
y^2 + z^3 + x
>> subs(f,[x,y,z],[z,y,x])
ans =
x^3 + y^2 + z
>> subs(f,[x,y,z],[1,2,3])
ans =
32
(8)diff(函数名,变量名,求导次数)
>> syms x y z
>> f=sin(x)+cos(y)+z
f =
z + cos(y) + sin(x)
>> diff(f,x,1)
ans =
cos(x)
>> diff(f,y,1)
ans =
-sin(y)
>> diff(f,z,1)
ans =
1
>> diff(f,x,2)
ans =
-sin(x)
(7)积分
不定积分:int(函数,自变量)
定积分:int(函数,自变量,起始地址,终止地址)
不定积分:
>> f=x^2+y
f =
x^2 + y
>> int(f,x)
ans =
x^3/3 + y*x
>> int(f,y)
ans =
(y*(2*x^2 + y))/2
>>
定积分:
>> f=x
f =
x
>> int(f,x,0,2)
ans =
2
(10)旋转,转置,翻转矩阵
flipud(A):上下翻转矩阵
fliplr(A):左右翻转矩阵
A\’:转置矩阵
rot90(A):逆时针旋转矩阵90度
A =
1 2 3
4 5 6
>> A\’
ans =
1 4
2 5
3 6
>> rot90(A)
ans =
3 6
2 5
1 4
>> fliplr(A)
ans =
3 2 1
6 5 4
>> flipud(A)
ans =
4 5 6
1 2 3