数组对于MATLAB是非常重要的数据结构,数组运算是MATLAB完成计算的基础
因为在MATLAB中,所有数据!!都要以数组的形式被存储!!
数组的元素可以是任何数据类型,比如数值,字符串
矩阵是特殊的数组,一定要明白矩阵在MATLAB中也是以数组形式存储的
由于MATLAB是面向对象的,所以数值数组是最重要的内建数据类型
创建数组:
clear all
format compact % 紧凑显示输出
a=[]
b=[1 2 3 4 5 6]
c=[1, 2, 3, 4, 5, 6]
d=[1;2;3;4;5;6;]
e=d' % 转置
a =
[]
b =
1 2 3 4 5 6
c =
1 2 3 4 5 6
d =
1
2
3
4
5
6
e =
1 2 3 4 5 6
>>
或:
a=2:6
step=1.5
b=1.1:step:6.8
c=1.2:-step:-8
a =
2 3 4 5 6
step =
1.5000
b =
1.1000 2.6000 4.1000 5.6000
c =
1.2000 -0.3000 -1.8000 -3.3000 -4.8000 -6.3000 -7.8000
或:
logspace 以对数函数关系划分空间
linspace 线性划分空间 line space
clear all
clc
format compact
format short
a=logspace(1,2)
b=logspace(1,2,10)
c=linspace(1,100)
d=linspace(1,40,3)
e=linspace(1,20,1)
a =
1 至 15 列
10.0000 10.4811 10.9854 11.5140 12.0679 12.6486 13.2571 13.8950 14.5635 15.2642 15.9986 16.7683 17.5751 18.4207 19.3070
16 至 30 列
20.2359 21.2095 22.2300 23.2995 24.4205 25.5955 26.8270 28.1177 29.4705 30.8884 32.3746 33.9322 35.5648 37.2759 39.0694
31 至 45 列
40.9492 42.9193 44.9843 47.1487 49.4171 51.7947 54.2868 56.8987 59.6362 62.5055 65.5129 68.6649 71.9686 75.4312 79.0604
46 至 50 列
82.8643 86.8511 91.0298 95.4095 100.0000
b =
10.0000 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.0000
c =
1 至 25 列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
26 至 50 列
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
51 至 75 列
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
76 至 100 列
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
d =
1.0000 20.5000 40.0000
e =
20
>>
访问数组:
>> b(1:4)
ans =
1 2 3 4
>> b(2:end)
ans =
2 3 4 5 6
>> c(end:-1:2)
ans =
6 5 4 3 2
>> d([2 6])
ans =
2
6
这里可以看出MATLAB和python及大多数编程语言的区别,MATLAB的索引从1开始, 而大多数语言是从0 开始。且Python中访问end但不会输出end(python中用-1索引表示数组中最后一个元素)那个元素, 而matlab会输出最后一个元素
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> x=np.arange(2,7)
>>> x[0]
2
>>> x[1:-1]
array([3, 4, 5])
>>> x
array([2, 3, 4, 5, 6])
>>>
修改元素:
>> b(4)=8
b =
1 2 3 8 5 6
>> e([1 5])=[34 56]
e =
34 2 3 4 56 6
数组的运算
+,-,./, .*分别是数组的加减乘除运算
全部需要A,B矩阵同维,得到的运算结果也是同维数组
左除和右除:A ./ B = B .\ A ,A是被除数
跟常数的乘除法:∗和.∗*和.*∗和.∗一样,/和./一样
a=1:6
b=2:7
c=a.*b
d=b./a
e=a.\b
f=a*3
g=a.*3
h=a/2
k=a./2
a =
1 2 3 4 5 6
b =
2 3 4 5 6 7
c =
2 6 12 20 30 42
d =
2.0000 1.5000 1.3333 1.2500 1.2000 1.1667
e =
2.0000 1.5000 1.3333 1.2500 1.2000 1.1667
f =
3 6 9 12 15 18
g =
3 6 9 12 15 18
h =
0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
k =
0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
乘方:
a=1:6
b=2:7
c=a.^2
d=a.^b
e=2.^a
a =
1 2 3 4 5 6
b =
2 3 4 5 6 7
c =
1 4 9 16 25 36
d =
1 8 81 1024 15625 279936
e =
2 4 8 16 32 64
数组的点积运算,要求AB同维
a=1:6
b=2:7
c=dot(a,b)
e=sum(a.*b)
a =
1 2 3 4 5 6
b =
2 3 4 5 6 7
c =
112
e =
112
>>
关系运算
a=1:6
b=2:7
c=a<4
d=a==b
e=a~=b
连括号都不用写!
a =
1 2 3 4 5 6
b =
2 3 4 5 6 7
c =
1×6 logical 数组
1 1 1 0 0 0
d =
1×6 logical 数组
0 0 0 0 0 0
e =
1×6 logical 数组
1 1 1 1 1 1
>>
逻辑运算
逻辑运算只管元素是不是非零,只要非零就是1,否则就是0
a=0:5
b=2:7
b(2)=0
c=a&b
d=a|b
e=~a
a =
0 1 2 3 4 5
b =
2 3 4 5 6 7
b =
2 0 4 5 6 7
c =
1×6 logical 数组
0 0 1 1 1 1
d =
1×6 logical 数组
1 1 1 1 1 1
e =
1×6 logical 数组
1 0 0 0 0 0
>>