[初学笔记]数组
来源:互联网 发布:suse 11 yum 编辑:程序博客网 时间:2024/05/20 04:49
一些常用的函数,用于创建一些特定的组合方式的数组
1 zeros() 函数创建一个数组的所有零:
生成一个空矩阵,用于给变量用于存储
>> zeros(5)
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
2 ones() 函数创建一个数组,所有的:
一个单位矩阵
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
3 eye() 函数创建一个矩阵,只有0 1
生成对角矩阵
Y = eye(n):返回n*n单位矩阵;
Y = eye(m,n):返回m*n单位矩阵;
Y = eye([m n]):返回m*n单位矩阵;
Y = eye(size(A)):返回与A一样大小的单位矩阵;
>> eye (4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
0 1 0
0 0 1
>> eye(2)
ans =
1 0
0 1
0 1
>> eye(1)
ans =
1
>> eye(0)
ans =
[]
>> eye(2,3)
ans =
1 0 0
0 1 0
0 1 0
>> a = [1 2 3];
>> eye(size(a))
>> eye(size(a))
ans =
1 0 0
>> eye([2,3])
ans =
1 0 0
0 1 0
0 1 0
4 rand() 函数创建一个数组(0,1)上均匀分布的随机数:
留意前两种输入方式是不同的,rand ( 2 , 3 ) rand ( 2 : 3 ),最后的计算结果也不同
>> rand(2,3)
ans =
0.0357 0.9340 0.7577
0.8491 0.6787 0.7431
0.8491 0.6787 0.7431
>> rand(2:3)
ans =
0.3922 0.1712 0.0318
0.6555 0.7060 0.2769
0.6555 0.7060 0.2769
>> rand ()
ans =
0.0462
5 magic() 函数创建一个幻方阵列。它需要一个单数的参数。该参数必须是一个标量大于或等于3。
产生相同的总和,当它的元素加入逐行,逐列或对角线幻方是一个正方形。
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
3 5 7
4 9 2
>> magic(6)
ans =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
6 多维数组
在Matlab中习惯性的会将二维数组中的第一维称为“行”第二维称为“列”,而对于三维数组的第三位则是习惯性的称为“页”。
在Matlab中将三维及三维以上的数组统称为高维数组,三维数组也是高级运算的基础
(1)徒手创建多维数组
在二维数组的基础上进行扩展为多维
先建立一个二维数组,然后扩展
下面是正确的书写方式
>> a = [ 3 4 9; 1 5 8 ; 7 2 6];
a3(:,:,1) = a * 1;
a3(:,:,2) = a * 2;
a3(:,:,3) = a * 3;
disp(a)
disp(a3)
a3(:,:,1) = a * 1;
a3(:,:,2) = a * 2;
a3(:,:,3) = a * 3;
disp(a)
disp(a3)
3 4 9
1 5 8
7 2 6
(:,:,1) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
(:,:,2) =
6 8 18
2 10 16
14 4 12
2 10 16
14 4 12
(:,:,3) =
9 12 27
3 15 24
21 6 18
3 15 24
21 6 18
下面是在写代码的时候有不同的地方,但是输出来是不对的,会有附带的zeros
>> a = [ 3 4 9; 1 5 8 ; 7 2 6];
a1(:,:,1) = a * 1;
a2(:,:,2) = a * 2;
a3(:,:,3) = a * 3;
disp(a)
disp(a1)
disp(a2)
disp(a3)
a1(:,:,1) = a * 1;
a2(:,:,2) = a * 2;
a3(:,:,3) = a * 3;
disp(a)
disp(a1)
disp(a2)
disp(a3)
3 4 9
1 5 8
7 2 6
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
(:,:,1) =
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
(:,:,2) =
6 8 18
2 10 16
14 4 12
2 10 16
14 4 12
(:,:,1) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
(:,:,2) =
6 8 18
2 10 16
14 4 12
2 10 16
14 4 12
(:,:,3) =
9 12 27
3 15 24
21 6 18
3 15 24
21 6 18
(2)我们也可以使用 ones(), zeros() 或 rand() 函数创建多维数组。
>> a = zeros(1,2,3)
a(:,:,2)
a(:,:,3)
a(:,:,2)
a(:,:,3)
a(:,:,1) =
0 0
a(:,:,2) =
0 0
a(:,:,3) =
0 0
ans =
0 0
ans =
0 0
>> a = ones (1,2,3)
a(:,:,2)
a(:,:,3)
a(:,:,2)
a(:,:,3)
a(:,:,1) =
1 1
a(:,:,2) =
1 1
a(:,:,3) =
1 1
ans =
1 1
ans =
1 1
>> a = rand (1,2,3)
a(:,:,2)
a(:,:,3)
a(:,:,2)
a(:,:,3)
a(:,:,1) =
0.4456 0.6463
a(:,:,2) =
0.7094 0.7547
a(:,:,3) =
0.2760 0.6797
ans =
0.7094 0.7547
ans =
0.2760 0.6797
(3)我们也可以使用cat()函数来建立多维数组。它结合沿着指定的维度的数组列表:
Cat命令的个事为【C=cat(dim,A1,A2,A3,A4……)】
其中dim表示的是创建数组的维度,A1,A2,A3,A4表示的是各维度上的数组。
用cat命令可以创建两个并列的同样的或者两个不同的,如果是创建只有两个维度的话,就只能并列呈现
用cat命令创建三个及其以上的维度的话,则是按一个一个来进行输出,除非自己加上矩阵
>> a = [ 3 4 9; 1 5 8 ; 7 2 6];
% cat命令的公式 C = Cat (dim,a,a*2,a*3....)
C1 = cat(3,a,a,a)
C2 = cat(4,a,a*2,a*3,a*4)
C3 = cat(2,a,a)
% cat命令的公式 C = Cat (dim,a,a*2,a*3....)
C1 = cat(3,a,a,a)
C2 = cat(4,a,a*2,a*3,a*4)
C3 = cat(2,a,a)
C1(:,:,1) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
C1(:,:,2) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
C1(:,:,3) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
C2(:,:,1,1) =
3 4 9
1 5 8
7 2 6
1 5 8
7 2 6
C2(:,:,1,2) =
6 8 18
2 10 16
14 4 12
2 10 16
14 4 12
C2(:,:,1,3) =
9 12 27
3 15 24
21 6 18
3 15 24
21 6 18
C2(:,:,1,4) =
12 16 36
4 20 32
28 8 24
4 20 32
28 8 24
C3 =
3 4 9 3 4 9
1 5 8 1 5 8
7 2 6 7 2 6
1 5 8 1 5 8
7 2 6 7 2 6
>> C4 = cat(2,a,a*2)
C4 =
3 4 9 6 8 18
1 5 8 2 10 16
7 2 6 14 4 12
1 5 8 2 10 16
7 2 6 14 4 12
7 常用的命令函数
数组函数
MATLAB提供以下功能进行排序,旋转,置乱,重塑或移动数组的内容。
8 length,ndims,numel
>>
a = ['aa','abc','abcd']
length (a)
numel(a)
b = rand (4 ,2 ,3)
ndims(b)
a = ['aa','abc','abcd']
length (a)
numel(a)
b = rand (4 ,2 ,3)
ndims(b)
a =
aaabcabcd
ans =
9
ans =
9
b(:,:,1) =
0.6551 0.9597
0.1626 0.3404
0.1190 0.5853
0.4984 0.2238
0.1626 0.3404
0.1190 0.5853
0.4984 0.2238
b(:,:,2) =
0.7513 0.8909
0.2551 0.9593
0.5060 0.5472
0.6991 0.1386
0.2551 0.9593
0.5060 0.5472
0.6991 0.1386
b(:,:,3) =
0.1493 0.8143
0.2575 0.2435
0.8407 0.9293
0.2543 0.3500
0.2575 0.2435
0.8407 0.9293
0.2543 0.3500
ans =
3
9 循环数组内的元素排位 circshift
a=[123;456;789]% the original array a
b= circshift(a,1)% circular shift first dimension values downby1.
c= circshift(a,[1-1])% circular shift first dimension values% downby1%and second dimension values to the left%by1
a =
1 2 3
4 5 6
7 8 9
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
2 3 1
5 6 4
10 sort 给数组进行排序
>> v = [ 23 45 12 9 5 0 19 17] % horizonal vector
sort(v) %sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
sort(v) %sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
3 5 9
0 1 2
11 单位数列 cell 函数
参考 网址 百度经验
http://jingyan.baidu.com/article/3ea51489df85c552e61bbaeb.html
http://jingyan.baidu.com/article/7908e85c99dc3caf491ad27d.html
>> a = cell(2,3)
a = {'s01', 's02', 's03'; 's04','s05','s06'}
a{2,2}
a{1,3}
a = {'s01', 's02', 's03'; 's04','s05','s06'}
a{2,2}
a{1,3}
a =
[] [] []
[] [] []
[] [] []
a =
's01' 's02' 's03'
's04' 's05' 's06'
's04' 's05' 's06'
ans =
s05
ans =
s03
>> celldisp(a)
a{1,1} =
s01
a{2,1} =
s04
a{1,2} =
s02
a{2,2} =
s05
a{1,3} =
s03
a{2,3} =
s06
阅读全文
0 0
- [初学笔记]数组
- matlab初学笔记1-使用数组
- 数组初学
- [初学笔记]matlab中 访问单元格数组 cell 的内容
- 初学笔记
- 初学笔记
- 初学二维数组心得
- PHP 数组初学小记
- PHP初学之数组
- 数组 /java初学
- 二维数组 /java初学
- c++初学之数组
- 初学树状数组
- 初学编程-----数组运算
- java初学--数组
- 初学后缀数组
- 前端~初学自用~数组
- 【java初学笔记7】马士兵-java-数组-1、2-概况
- 2---Python:简单文件操作
- 为什么LPWA对物联网来说是颠覆性的新网络?
- 使用SQL语句实现真分页
- 多线程问题总结
- 当硬盘无法卸载的时候
- [初学笔记]数组
- 脚本中动态添加摄像机和灯光
- Android TV Metro界面
- TensorFlow 入门
- 哪个国家拥有全世界最牛逼的程序员?
- 51nod 1295 XOR key 01trie(可持久化字典树坑已填)
- 关于进制的题
- 物联网感知层进入技术创新爆发期
- 【难容异见,常被他人的言行激怒】…