簡體   English   中英

如何在matlab中重復3-D矩陣的每個維度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM