我有6x6矩阵(ud
),我使用以下内容将其分成3x3个小块:
%Splitting of array
B = mat2cell(ud, udBlockVectorR, udBlockVectorC);
接下来,我想找到B
中每个子矩阵的中位数。
我尝试过使用它,
for i = 1: 1: udNumBlockC
for j = 1: 1: udNumBlockC
%Find the median of each block
udMV = median( B{i, j}, :);
end
end
然而,它并没有给我我想要的答案。
如何声明子矩阵,以便我可以将它们用于上述目的?
答案 0 :(得分:1)
按如下方式拆分6x6矩阵ud
,
>> B = mat2cell(ud, [3 3],[3 3])
B =
[3x3 double] [3x3 double]
[3x3 double] [3x3 double]
接下来,要从2D数组的中位数获取单个值,您需要重新整形输入(即3x3 - > 9x1),否则您将获得每列的值。水平连接每个子矩阵,以便您可以一次重塑它们(即3x12 - > 9x4)。对于ud = magic(6)
:
>> meds = median(reshape([B{:}],3*3,[]))
meds =
7 29 23 14
在上面的命令中,[B{:}]
是3x12。 reshape
命令将每个3x3矩阵中的所有值作为4列之一。然后median
计算每列(子矩阵)的中位数。
子矩阵的顺序是(row,col):( 1,1),(2,1),(1,2),(2,2)。