[英]How to repeat each dimension of a 3-D matrix in matlab
假設我有一個維度為 [X,Y,Z] 的 3-D 矩陣a
,
a(:,:,1) = [1 2; 3 4];
a(:,:,2) = [5 6; 7 8];
有沒有辦法重復的每個條目a
,說了N次,並建立一個新的矩陣, b
,維[X,Y,N * Z]? 例如,如果 N=2,有一個像這樣的矩陣b
,
%repeat first element of 'a' 2ce
b(:,:,1) = [1 2; 3 4];
b(:,:,2) = [1 2; 3 4];
%repeat second element of 'a' 2ce
b(:,:,3) = [5 6; 7 8];
b(:,:,4) = [5 6; 7 8];
使用嵌套循環當然可以實現這一點,例如
%not tested, but should work
b = zeros(X,Y,N*Z);
k=1;
for j=1:Z
for i=1:N
b(:,:,k) = a(:,:,j);
k=k+1;
end
end
但我想知道是否有可用於此目的的內置功能。
創建 1,1,2,2,... 形式的索引(例如N=2
)並在第三維中使用它:
b = a(:,:,ceil(1/N:1/N:size(a,3)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.