2016-09-21 35 views
2

我有一個大小爲28x28x5000的數組。我需要將其轉換爲28x28x3x5000。第三維代表渠道。每個通道是相同的副本。將多個通道添加到28x28x5000矩陣

如何在不使用循環的情況下在Matlab中做到這一點?

回答

3

另外一個班輪是repmat(reshape(A,[28,28,1,5000]),1,1,3,1);

+0

這是最糟糕的解決方案,爲你需要明確寫出尺寸。仍然是一個很好的:P;) –

+1

@AnderBiguri你說得對,它是醜陋的。我只是想通過一個非常具體的答案回答一個非常具體的問題,並避免額外的開銷。你的解決方案當然更優雅。 – khonegger

3

什麼repmat(permute(A,[1,2,4,3]),[1,1,3,1])

3

首先permute拿到第四維,然後用repmat複製:

%// input data 
a = magic(28); 
in = repmat(a,[1,1,100]); 

%// permute 
out = permute(in,[1,2,4,3]); 

%// copy 
out(:,:,[2 3],:) = repmat(out(:,:,1,:), [1, 1, 2]);