2
如果我有矩陣size(mat)= X*Y*6
如何調整MATLAB矩陣
讓調用mat(:,:,1)=A
和mat(:,:,2)=B
等
我怎麼rezise墊X * Y * 12
其中
mat(:,:,1)=mat(:,:,2)= A
mat(:,:,3)=mat(:,:,4)=B
等
如果我有矩陣size(mat)= X*Y*6
如何調整MATLAB矩陣
讓調用mat(:,:,1)=A
和mat(:,:,2)=B
等
我怎麼rezise墊X * Y * 12
其中
mat(:,:,1)=mat(:,:,2)= A
mat(:,:,3)=mat(:,:,4)=B
等
您可以使用下面的語法:
%defines input matrix (in your case it is already defined)
m = 500;
n = 400;
z = 6;
mat = rand(m,n,z);
%initialize output matrix
newMat = zeros(m,n,z*2);
%assign old matrix values into the new matrix
newMat(:,:,1:2:end) = mat;
newMat(:,:,2:2:end) = mat;
如果你有Matlab的2015A或更新您可以使用repelem
:
N = 2; %// number of times to repeat
result = repelem(mat, 1, 1, N); %// repeat N times along 3rd dim
對於較舊的Matlab的版本,你可以做手工如下:
N = 2; %// number of times to repeat
ind = ceil(1/N:1/N:size(mat,3)); %// build index with repetitions
result = mat(:,:,ind); %// apply index along desired dim
例如:
>> %// Data
>> mat = randi(9,2,4,2)
mat(:,:,1) =
5 8 9 2
7 3 1 5
mat(:,:,2) =
5 7 1 1
1 8 8 2
>> %// First approach
>> N = 2;
>> result = repelem(mat, 1, 1, N)
result(:,:,1) =
5 8 9 2
7 3 1 5
result(:,:,2) =
5 8 9 2
7 3 1 5
result(:,:,3) =
5 7 1 1
1 8 8 2
result(:,:,4) =
5 7 1 1
1 8 8 2
>> %// Second approach
>> N = 2;
>> ind = ceil(1/N:1/N:size(mat,3));
>> result = mat(:,:,ind)
result(:,:,1) =
5 8 9 2
7 3 1 5
result(:,:,2) =
5 8 9 2
7 3 1 5
result(:,:,3) =
5 7 1 1
1 8 8 2
result(:,:,4) =
5 7 1 1
1 8 8 2
在最後兩行中,您是不是指:'newMat(:,:,1:2:end)= mat'? – Suever
@Suever - 絕對 - 這就是我的意思:)謝謝你的評論! – drorco