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

LNK*_*LNK 2 matlab

我有一个MR行和C*k列的矩阵.我想创建另一个F包含R行和C列的矩阵,以便这样做

 F(:,j) = min(M(:,(j-1)*k+1:j*k),[],2)
Run Code Online (Sandbox Code Playgroud)

换句话说,第一列F应该是第一k列的min M.

第二列F应该是第二k列的min,M依此类推.我正在尝试将矩阵重新整形MR*C x k矩阵中D找到min并再次将其重新R x C整形为矩阵.但我无法正确地重塑MF,所以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]; 
Run Code Online (Sandbox Code Playgroud)

Sue*_*ver 5

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

F = squeeze(min(reshape(M, size(M, 1), k, size(M, 2)/k), [], 2))
Run Code Online (Sandbox Code Playgroud)