Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 手动上采样/复制矩阵_Matlab_Loops_Matrix - Fatal编程技术网

Matlab 手动上采样/复制矩阵

Matlab 手动上采样/复制矩阵,matlab,loops,matrix,Matlab,Loops,Matrix,我试图通过复制另一个矩阵,将一个矩阵的样本增加两倍,但我对代码感到困惑,基本上我想要的是: 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,

我试图通过复制另一个矩阵,将一个矩阵的样本增加两倍,但我对代码感到困惑,基本上我想要的是:

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

但它说索引超过了矩阵维数,我理解这是因为+1,但我不确定如何才能做到这一点…

我最终使用的解决方案是:

[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
数据:

使用(R2015a中介绍的)的解决方案:

使用索引的解决方案

Up = Y(ceil(1/n:1/n:end), ceil(1/n:1/n:end));
使用Kronecker产品的解决方案:

Up = kron(Y, ones(n))

这行吗
repmat(sort(repmat([1,2],1,2)),2,1)
您这样做是作为编程练习,还是只需要调整矩阵的大小?因为您可以使用
kron
imresize
在一行中完成此操作。这个问题很重要:实际上,删除“排序”可以解决问题,谢谢@一个月一个月的尝试
kron(Y,one(2))
。应该在水平和垂直方向上复制每个元素两次。
Up = Y(ceil(1/n:1/n:end), ceil(1/n:1/n:end));
Up = kron(Y, ones(n))