矩阵的创建
1.直接输入法
>> a=[1 2 3;4 5 6]
a =
1 2 3
4 5 6
>> b=[11,12,13;21,22,23]
b =
11 12 13
21 22 23
2.全1矩阵的创建
>> c=ones(3,3)
c =
1 1 1
1 1 1
1 1 1
3.全0矩阵的创建
>> d=zeros(3,3)
d =
0 0 0
0 0 0
0 0 0
4.单位矩阵的创建
>> e=eye(3,3)
e =
1 0 0
0 1 0
0 0 1
5.等差数列的创建1
>> a=1:9
a =
1 2 3 4 5 6 7 8 9
等差数列的创建2:
>> a=linspace(0,10,6)%0--10之间产生6个点
a =
0 2 4 6 8 10
6.等比数列的创建
>> A=logspace(0,log10(32),6)
A =
1.0000 2.0000 4.0000 8.0000 16.0000 32.0000
7.矩阵的转置
a=a'
8.矩阵运算
矩阵矩阵分.*和*,学过高数的都懂,不啰嗦了
9.魔法矩阵的创建
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
10.矩阵的水平翻转和垂直翻转
a=fliplr(a)
a=flipud(a)
A=rand(4,6)
flipud(A)
fliplr(A)
flipdim(A,2) %同filplr
rot90(A) %同‘
rot90(A,2) %filplr+filpud
11.矩阵的重组
>> a=1:9
a =
1 2 3 4 5 6 7 8 9
>> a=reshape(a',3,3)
a =
1 4 7
2 5 8
3 6 9
12.取矩阵的连续任意行
>> a(1:2,:)
ans =
1 4 7
2 5 8
13.取矩阵的连续任意列
>> a(:,2:3)
ans =
4 7
5 8
6 9
14.求矩阵的维数
>> ndims(a)
ans =
2
15.数据格式转换
>> format short
>> 1/3
ans =
0.3333
>> format long
>> 1/3
ans =
0.33333333333333
针对数据的显示形式控制,matlab中有专用命令 format 但该命令不影响数据的储存形式和计算精度 format 默认格式 format short 5字长定点数 format long 15字长定点数 format short e 5字长浮点数 format long e 15字长浮点数 format short g format long g format hex 16进制 format bank 定点货币形式 format rat 小数分数表示 format + +,-,空格 format compact 压缩空格 format loose 包括空格和空行 format long 15字长定点数 format short e 5字长浮点数 format long e 15字长浮点数 format short g format long g format hex 16进制 format bank 定点货币形式 format rat 小数分数表示 format + +,-,空格 format compact 压缩空格 format loose 包括空格和空行
15.分数转为小数
>> vpa(1/2)
ans =
.50000000000000000000000000000000
16.精度设置
>> z = 1.0e-16
x = 1.0e+2
>> digits(15)
y = vpa(x*z+1)
y =
1.00000000000001
>> digits(10)
y = vpa(x*z+1)
y =
1.000000000
>> digits(5)
y = vpa(x*z+1)
y =
1.0000
17.取整
向零取整(截尾取整)
fix-向零取整(Round towards zero);
>> fix(3.6)
ans = 3
向负无穷取整(不超过x 的最大整数-高斯取整)
floor-向负无穷取整(Round towards minus infinity);
>> floor(-3.6)
ans = -4
向正无穷取整(大于x 的最小整数)
ceil-向正无穷取整(Round towards plus infinity);
>> ceil(-3.6)
ans = -3
向最近整数取整,四舍五入(四舍五入取整)
round-向最近整数取整,四舍五入(Round towards nearest integer);
>> round(3.5)
ans = 4
18.矩阵单双坐标的转换:
>> a=1:9;
>> a=reshape(a',3,3);
>> a
a =
1 4 7
2 5 8
3 6 9
>> [m n]=ind2sub(size(a),2);%但坐标2转为双坐标(2,1)
>> [m n]
ans =
2 1
>> sub2ind(size(a),1,3)%双坐标(1,3)转为单坐标7
ans =
7
19.数组结构测试函数
>> A=32
isscalar(A)
B=1:5
isvector(B)
isempty(B)
B=[]
isempty(B)
A =
32
ans =
1
B =
1 2 3 4 5
ans =
1
20.对角矩阵创建
>> A=diag([1 2 3])
A =
1 0 0
0 2 0
0 0 3
>> B=diag([1 2 3],2)
B =
0 0 1 0 0
0 0 0 2 0
0 0 0 0 3
0 0 0 0 0
0 0 0 0 0
>> B=diag([1 2 3],1)
B =
0 1 0 0
0 0 2 0
0 0 0 3
0 0 0 0
>> B=diag([1 2 3],0)
B =
1 0 0
0 2 0
0 0 3
>> C=[3 5 1 2;2 4 5 6]
diag(C)
D=diag(diag(C),-1)
C =
3 5 1 2
2 4 5 6
ans =
3
4
D =
0 0 0
3 0 0
0 4 0
21.创建空数组
A=[]
22.创建随机数组
>> A=rand(2)
B=rand(2,4)
C=randn(size(A)) %功能:产生标准正态分布的随机数或矩阵的函数。
D=randn(size(B))
A =
0.9501 0.6068
0.2311 0.4860
B =
0.8913 0.4565 0.8214 0.6154
0.7621 0.0185 0.4447 0.7919
C =
-0.4326 0.1253
-1.6656 0.2877
D =
-1.1465 1.1892 0.3273 -0.1867
1.1909 -0.0376 0.1746 0.7258
rand产生的是0到1(不包括1)的随机数.
matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同的随机数.
matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的.
多次运行,生成相同的随机数方法:
用rand('state',S)设定种子
S为35阶向量,最简单的设为0就好
例: rand('state',0);rand(10)
任何生成相同的随机数方法:
试着产生和时间相关的随机数,种子与当前时间有关.
rand('state',sum(100*clock))
即: rand('state',sum(100*clock)) ;rand(10)
只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不现.
也就是如果时间相同,生成的随机数还是会相同.
在你计算机速度足够快的情况下,试运行一下:
rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5);
A和B是相同.
所以建议再增加一个随机变量,变成:
rand('state',sum(100*clock)*rand(1));
%据说matlab 的rand 函数还存在其它的根本性的问题,似乎是非随机性问题
23.对角生成函数
>> A=eye(2)
B=ones(2,4)
C=magic(3)
blkdiag(A,B,C)
A =
1 0
0 1
B =
1 1 1 1
1 1 1 1
C =
8 1 6
3 5 7
4 9 2
ans =
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 1 1 1 0 0 0
0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 8 1 6
0 0 0 0 0 0 3 5 7
0 0 0 0 0 0 4 9 2
>> blkdiag(1,2,3)
ans =
1 0 0
0 2 0
0 0 3
24.数组开方
>> A=[1,4;9,16]
A =
1 4
9 16
>> sqrt(A)
sqrtm(A)
exp(A)
expm(A)
ans =
1 2
3 4
ans =
0.4662 + 0.9359i 0.8860 - 0.2189i
1.9935 - 0.4924i 3.7888 + 0.1152i
ans =
1.0e+006 *
0.0000 0.0001
0.0081 8.8861
ans =
1.0e+007 *
0.7988 1.5181
3.4158 6.4918
25.块操作KRON
For example, if X is 2 by 3, then KRON(X,Y) is
[ X(1,1)*Y X(1,2)*Y X(1,3)*Y
X(2,1)*Y X(2,2)*Y X(2,3)*Y ]
>> A=[0 1 0;1 0 2;1 1 3]
B=magic(3)
C=kron(A,B)
A =
0 1 0
1 0 2
1 1 3
B =
8 1 6
3 5 7
4 9 2
C =
0 0 0 8 1 6 0 0 0
0 0 0 3 5 7 0 0 0
0 0 0 4 9 2 0 0 0
8 1 6 0 0 0 16 2 12
3 5 7 0 0 0 6 10 14
4 9 2 0 0 0 8 18 4
8 1 6 8 1 6 24 3 18
3 5 7 3 5 7 9 15 21
4 9 2 4 9 2 12 27 6