Matlab入门学习
第2节 矩阵和向量的使用–索引和提取多个元素
0. 前言
通过这一节的学习我们可以知道如何对数组进行索引,如何提取多个元素,如何更高数组中的值。
1. 对数组进行索引
task1:随机生成一个6x5的矩阵,取出第5行第4列的元素,并将其赋予变量y;
>> data=rand(6,5)
data =
0.2785 0.9572 0.7922 0.6787 0.7060
0.5469 0.4854 0.9595 0.7577 0.0318
0.9575 0.8003 0.6557 0.7431 0.2769
0.9649 0.1419 0.0357 0.3922 0.0462
0.1576 0.4218 0.8491 0.6555 0.0971
0.9706 0.9157 0.9340 0.1712 0.8235
>> y=data(5,4)
y =
0.6555
>>
task2:获取变量 data 的最后一行第三列的值。将该值赋给一个名为 x 的变量。
提示:使用end关键字可以作为行或列来索引最后一个元素,end放在第一元素的位置上则代表是最后一行,放在第二元素的位置上则代表最后一列;
>> x=data(end,3)
x =
0.9340
>>
task3: 取出倒数第2行和倒数第3行的元素,并将其赋予变量z;
>> z=data(end-1,end-2)
z =
0.8491
>>
Tips:再次提醒,Matlab是左闭右闭的,是包含端点值的!
2. 提取多个元素
task1: 创建一个名为density 的变量,其中包含名为 data 的矩阵中第 2 列上的所有元素;
提示:在作索引时,使用冒号运算符( :)可提取此维度中所有的元素,语法为x=A(2,:)表示我要取出第2行所有列的元素,冒号放在第一元素的位置上就代表要取出所有行元素,放在第二元素的位置上就代表要取出所有列元素;
>> data
data =
3.0000 0.5300 4.0753 NaN
18.0000 1.7800 6.6678 2.1328
19.0000 0.8600 1.5177 3.6852
20.0000 1.6000 3.6375 8.5389
21.0000 3.0000 4.7243 10.1570
23.0000 6.1100 9.0698 2.8739
38.0000 2.5400 5.3002 4.4508
>> density=data(:,2)
density =
0.5300
1.7800
0.8600
1.6000
3.0000
6.1100
2.5400
>>
task2: 创建一个名为 volumes 的变量,其中包含 data 的最后两列的所有元素。
提示:还记得第一节中讲的冒号的用法吗?它可以取出从第一个元素到最后一个元素的所有值。
>> volumes=data(:,end-1:end)
volumes =
4.0753 NaN
6.6678 2.1328
1.5177 3.6852
3.6375 8.5389
4.7243 10.1570
9.0698 2.8739
5.3002 4.4508
>>
task3: 使用单个索引值创建一个名为 p 并且包含向量 density 中的第 6 个元素的变量。
提示:直接用A(index)即可获得A向量里的某个值,如x=A(3)代表获取向量A中的第3个元素;
>> density
density =
0.5300
1.7800
0.8600
1.6000
3.0000
6.1100
2.5400
>> p=density(6)
p =
6.1100
>>
task4: 使用索引值范围创建一个名为 p 的向量,其中包含从 density 的第 2 个到第 5 个元素范围内的所有元素。
提示:冒号的第一个用法,(起始元素:终止元素)包含起始元素和终止元素;
>> p=density(2:5)
p =
1.7800
0.8600
1.6000
3.0000
>>
3. 更改数组中的值
task1:创建一个名为 v2 并且包含 data 的最后一列元素的向量;
提示:使用冒号运算符和end关键字;
>> v2=data(:,end)
v2 =
0.5000
2.1328
3.6852
8.5389
10.1570
2.8739
4.4508
>>
task2::显示 v2 中的第2个元素,并将其更改为 0.5;
>> v2(2)
ans =
2.1328
>> v2(2)=0.5
v2 =
0.5000
0.5000
3.6852
8.5389
10.1570
2.8739
4.4508
>>
task3:输出data,并将 data 的倒数第二行和最后一列中元素的值更改为 0.5;
>> data
data =
3.0000 0.5300 4.0753 0.5000
18.0000 1.7800 6.6678 2.1328
19.0000 0.8600 1.5177 3.6852
20.0000 1.6000 3.6375 8.5389
21.0000 3.0000 4.7243 10.1570
23.0000 6.1100 9.0698 2.8739
38.0000 2.5400 5.3002 4.4508
>> data(end-1,end)=0.5
data =
3.0000 0.5300 4.0753 0.5000
18.0000 1.7800 6.6678 2.1328
19.0000 0.8600 1.5177 3.6852
20.0000 1.6000 3.6375 8.5389
21.0000 3.0000 4.7243 10.1570
23.0000 6.1100 9.0698 0.5000
38.0000 2.5400 5.3002 4.4508
>>