2
考慮多維矩陣A
,其中size(A)
具有相同的偶數元素N
。應該如何找到矩陣B
與size(B)=size(A)/2
這樣的:從多維矩陣中提取塊
B(1,1,...,1)=A(1,1,...,1),
B(1,1,...,2)=A(1,1,...,2),
...
B(N/2,N/2,...,N/2)=A(N/2,N/2,...,N/2).
考慮多維矩陣A
,其中size(A)
具有相同的偶數元素N
。應該如何找到矩陣B
與size(B)=size(A)/2
這樣的:從多維矩陣中提取塊
B(1,1,...,1)=A(1,1,...,1),
B(1,1,...,2)=A(1,1,...,2),
...
B(N/2,N/2,...,N/2)=A(N/2,N/2,...,N/2).
我一般不喜歡arrayfun
(或糊塗的功能),但是如果維數是不是在幾千,那麼這應該是蠻好的:
Nv = size(A)/2;
S = arrayfun(@(x){1:x},Nv);
B = A(S{:});
也應該使用不同尺寸的尺寸。只需決定如何處理尺寸mod(size(A),2)~=0
。
非常感謝。我認爲N甚至如上所述。 –
對於沒有循環的溶液用'S = repmat({1:尺寸(A,1)/ 2},爲ndims(A),1)' – Daniel
剛剛意識到有不是數千尺寸。最多有47個(或者最近版本中可能有64個)非單身維度。任何超出的內容都不能被索引,並且要求索引大於uint64。在這裏優化是完全沒有必要的,迭代這樣一些值arrayfun是完全沒問題的。 – Daniel