【发布时间】:2017-08-15 15:39:14
【问题描述】:
我有一个n*n 矩阵,我想每 3 列提取一次,并将结果保存在不同的变量中。
我知道这样是可以做到的:
A1 = A(:,1:3);
A2 = A(:,4:6);
A3 = A(:,7:9);
但我想简化和自动化这个以管理大量数据!
A =
[1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81]
预期结果:
A1 =
[1 2 3
2 4 6
3 6 9
4 8 12
5 10 15
6 12 18
7 14 21
8 16 24
9 18 27]
A2 =
[4 5 7
8 10 12
12 15 18
16 20 24
20 25 30
24 30 36
28 35 42
32 40 48
36 45 54]
A3 =
[7 8 9
14 16 18
21 24 27
28 32 36
35 40 45
42 48 54
49 56 63
56 64 72
63 72 81]
【问题讨论】:
-
将现有矩阵的子集放入不同的变量中是一种非常低效的处理方式,并且会导致代码更长、更混乱。为什么你不想使用
A(:, 1:3)语法(甚至使用变量A(:, c:c+2))?创建完这些变量后,您打算如何处理它们? -
我假设 A2 应该开始 4 5 6...?
标签: matlab matrix vector octave