我试图通过复制另一个矩阵来对矩阵进行二次采样,但我对代码感到困惑,基本上我想要的是:
Y = [1,2]
然后上采样版本看起来像:
Up = [1,1,2,2;1,1,2,2]
到目前为止我写的是:
[row,col] = size(y)
Up = zeros(row*2,col*2);
for i = 1:2:row*2
for j = 1:2:col*2
Up(i, j) = Y(i,j);
Up(i+1, j) = Y(i,j);
Up(i, j+1) = Y(i,j);
Up(i+1, j+1) = Y(i,j);
end
end
但是它说Index超过了矩阵维度,我理解这是因为+ 1s但是我不确定如何做到这一点...
答案 0 :(得分:1)
数据:
Y = [1,2]; % matrix
n = 2; % repetition factor
使用repelem
function(在R2015a中引入)的解决方案:
Up = repelem(Y,n,n);
使用索引;
的解决方案Up = Y(ceil(1/n:1/n:end), ceil(1/n:1/n:end));
使用 Kronecker产品的解决方案:
Up = kron(Y, ones(n))
答案 1 :(得分:0)
我最终使用的解决方案是:
[row,col] = size(Y);
Up = zeros(row*2,col*2);
idx_row = 1;
for i = 1:D:row
idx_col = 1;
for j = 1:D:col
Up(i:i+1, j:j+1) = repmat(repmat(Y(idx_row,idx_col),1,2),2,1);
idx_col = idx_col + 1;
end
idx_row = idx_row + 1;
end