我正在研究一种MATLAB代码,它从矩阵A的奇数列构建一个列矩阵B
我的(杂乱)代码是
A = rand(5,10);
i = 1
ii = 1
while i <= size(A,2)
if mod(i+1,2)==0
B(1:size(A,1),ii) = A(:,i)
ii = ii + 1
i = i+1
end
i = i + 1
end
(选择列但不会将所有内容放在一列中,因为它应该如此) 有人可以帮助我以更简单的方式做同样的事情吗?
答案 0 :(得分:3)
这是一种 less-messy 方式,只需使用从第一列开始的2
的步长进行列索引,然后重新转换为所需的列向量 -
reshape(A(:,1:2:end),[],1)
示例运行 -
>> A
A =
1 5 9 13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20
>> reshape(A(:,1:2:end),[],1)
ans =
1
2
3
4
9
10
11
12
17
18
19
20
答案 1 :(得分:3)
以下是关于您的示例的代码;
A = rand(5,10)
t = A(:,1)'
for R =3: 2: length(A)
t = [t A(:,R)']
end
Result = t';