在没有for循环的情况下在matlab中查找几列的最小值

时间:2016-09-28 00:21:55

标签: matlab

我有一个带有M行和R列的矩阵C*k。我想创建另一个包含F行和R列的矩阵C,以便

 F(:,j) = min(M(:,(j-1)*k+1:j*k),[],2)

换句话说,F的第一列应该是k列的M列的最小值。

F的第二列应该是k的第二M列的分钟,依此类推。 我正在尝试将矩阵M重新整形为R*C x k矩阵D找到min并再次将其重新整形为R x C矩阵。但我无法正确地将M重塑为F 1}},以便F(i, :) = M(b, (j-1)*k+1:j*k)

这是一个小例子:

k=2;
M = [1 2 3 4; 5 6 7 8; 9 10 11 12;];
then
F = [1 3; 5 7; 9 11]; 

1 个答案:

答案 0 :(得分:5)

您最好的选择可能是将其重新整形为R x k x (C / k)矩阵,然后沿第二维计算min,然后挤压结果以移除现在为空的第二维。

F = squeeze(min(reshape(M, size(M, 1), k, size(M, 2)/k), [], 2))