目录
1.1.3多维数组及其操作
1.多维数组的属性:
数组属性 | 函数用法 | 函数功能 |
---|---|---|
尺寸 | size(A) | 按照行-列-页顺序,返回数组A每一维的大小 |
维度 | ndims(A) | 返回数组A具有的维度值 |
内存占用/数据类型 | whos | 返回当前工作区中的各个变量的详细信息 |
实例:
>> a = cat(4 ,[9 2;6 5],[7 1;8 4]);
>> size(a)
ans =
2 2 1 2
>> ndims(a)
ans =
4
>> whos
Name Size Bytes Class Attributes
a 4-D 64 double
ans 1x1 8 double
>> a
a(:,:,1,1) =
9 2
6 5
a(:,:,1,2) =
7 1
8 4
2.多维数组的操作
1.索引(单下标索引,多下标索引
>> a =randn(4,5,3)
a(:,:,1) =
0.5377 0.3188 3.5784 0.7254 -0.1241
1.8339 -1.3077 2.7694 -0.0631 1.4897
-2.2588 -0.4336 -1.3499 0.7147 1.4090
0.8622 0.3426 3.0349 -0.2050 1.4172
a(:,:,2) =
0.6715 0.4889 0.2939 -1.0689 0.3252
-1.2075 1.0347 -0.7873 -0.8095 -0.7549
0.7172 0.7269 0.8884 -2.9443 1.3703
1.6302 -0.3034 -1.1471 1.4384 -1.7115
a(:,:,3) =
-0.1022 -0.8649 1.0933 -1.2141 -0.7697
-0.2414 -0.0301 1.1093 -1.1135 0.3714
0.3192 -0.1649 -0.8637 -0.0068 -0.2256
0.3129 0.6277 0.0774 1.5326 1.1174
>> a(3,2,2) %访问第三行第二列第二页的元素
ans =
0.7269
>> a(27) %访问a中第27个元素(即第三行第二列第二页的元素)
ans =
0.7269
2.维度操作
(1)reshape
改变多维数组的形状,但线性存储位置不变(即顺序仍按照原先行-列-页优先级排列)
>> a=[1 4 7 0;2 5 8 14;3 6 9 12];
>> b = reshape(a,2,6)
b =
1 3 5 7 9 14
2 4 6 8 0 12
>> b= reshape(a,2,[])
b =
1 3 5 7 9 14
2 4 6 8 0 12
(2)permute 与ipermute
permte重新定义后的多维数组是把原来在某一维度上的所有元素移动到新的维度上,
可改变多维数组线性存储的位置
ipermute可看做perimute的逆函数
permute函数是Matlab中的一个重要函数,用于对数组进行维度重排。具体用法如下:
语法:B = permute(A,order)
参数说明:
A:需要重排的数组
order:一个整数数组,用于指定A中各维度的新顺序。例如,order=[2 1 3]表示将A的第1维和第2维交换位置。
返回值:B为重排后的数组。
示例:
A = rand(2,3,4); % 生成一个2x3x4的随机数组 B = permute(A,[2 1 3]); % 将A的第1维和第2维交换位置 size(B) % 输出B的大小,应为3x2x4
上述示例中,我们生成了一个2x3x4的随机数组A,然后使用permute函数将A的第1维和第2维交换位置,得到了一个3x2x4的新数组B。
>> a = randn(3,3,2)
a(:,:,1) =
-1.0891 1.1006 -1.4916
0.0326 1.5442 -0.7423
0.5525 0.0859 -1.0616
a(:,:,2) =
2.3505 -0.1924 -1.4023
-0.6156 0.8886 -1.4224
0.7481 -0.7648 0.4882
>> b=permute(a,[3 1 2])
b(:,:,1) =
-1.0891 0.0326 0.5525
2.3505 -0.6156 0.7481
b(:,:,2) =
1.1006 1.5442 0.0859
-0.1924 0.8886 -0.7648
b(:,:,3) =
-1.4916 -0.7423 -1.0616
-1.4023 -1.4224 0.4882
>> ipermute(b,[3 1 2])
ans(:,:,1) =
-1.0891 1.1006 -1.4916
0.0326 1.5442 -0.7423
0.5525 0.0859 -1.0616
ans(:,:,2) =
2.3505 -0.1924 -1.4023
-0.6156 0.8886 -1.4224
0.7481 -0.7648 0.4882
3.多维数组参与数学计算
》sum、mean等函数可以对多维数组中第一个不为1的维度上的向量进行计算
》sin、cos等函数则对多维数组中的每一个单独元素进行计算
》eig等针对二维数组的运算符号则需要用指定的页面上的二维数组作为输入函数
>> a = randn(2,5,2)
a(:,:,1) =
-0.1774 1.4193 0.1978 -0.8045 0.8351
-0.1961 0.2916 1.5877 0.6966 -0.2437
a(:,:,2) =
0.2157 -1.1480 0.7223 -0.6669 -0.0825
-1.1658 0.1049 2.5855 0.1873 -1.9330
>> sum(a)
ans(:,:,1) =
-0.3734 1.7109 1.7855 -0.1078 0.5914
ans(:,:,2) =
-0.9502 -1.0431 3.3077 -0.4796 -2.0155
>> sin(a)
ans(:,:,1) =
-0.1764 0.9885 0.1965 -0.7205 0.7414
-0.1948 0.2875 0.9999 0.6416 -0.2413
ans(:,:,2) =
0.2140 -0.9119 0.6611 -0.6185 -0.0824
-0.9191 0.1047 0.5279 0.1862 -0.9351
1.1.4变量命名
1.常量:程序语言中取不变值的量
2.系统预定义的变量:如圆周率pi
常量符号 | 常量含义 |
i或j | 虚数单位 |
Inf 或inf | 正无穷大 |
NaN | 不定时,表示非数值量 |
pi | 圆周率的双精度 |
eps | 容差变量,某量的绝对值小于eps,可以认为此量为0 |
Realmin或realmin | 最小浮点数,二的-1022次方 |
RealMa | 最大的浮点数 二的1023次方 |