2012-12-16 74 views
3

我必須從一個數組(1D),在64個塊,第一個元素(DC),和另外63個元素(AC)在單獨的數組中拆分。Matlab:優雅的方式來提取(拆分)數組元素

我提出上面的醜陋的代碼:

%split DC from AC 
n = 8^2; 
DC = zigZagLinha(1 : n : end); 
AC = blkproc(zigZagLinha, [1 n],'returnsTheOther63'); 

;

function array=returnsTheOther63(array64) 
    array = array64(2:64); 
end 

有沒有更好的方法來做到這一點? 這是爲了學術目的,所以,越乾淨,越好。

回答

5

你可以簡單地重塑它:

res = reshape(zigZagLinha, 64, []); % assuming num of elements can be divided by 64 exactly 
% otherwise some padding should be done... 
DC = res(1 ,:); % collect all first elements 
AC = res(2:end, :); % AC elements 
+0

正是我在打字。 +1 – Jonas

+1

不錯的。有用!是的,元素是在8^2塊。 – rdlu

相關問題