零填充矩阵

时间:2011-03-04 06:24:49

标签: matlab matrix

我有一个16X16矩阵。我必须将它添加到256X256矩阵中。任何人都可以帮助我如何将这个16X16矩阵变成256X256,用剩余的零填充?

5 个答案:

答案 0 :(得分:10)

如果您为原始大小之外的元素指定了某些内容,Matlab会自动使用零填充。

>> A = rand(16, 16);
>> A(256, 256) = 0;
>> size(A)
ans =
   256   256

答案 1 :(得分:3)

padded = zeros(256,256);
data = rand(16,16);
padded(1:16,1:16) = data;

答案 2 :(得分:3)

所以,这实际上并没有回答你的问题,但我认为它回答了你给出的用例。假设您要将较小的矩阵添加到大矩阵的左上角:

big = ones(256, 256);
small = ones(16, 16);
big(1:16, 1:16) = big(1:16, 1:16) + small;

这样可以避免分配额外的65000左右的双打,如果从16x16到256x256重新调整大小,就必须这样做。

答案 3 :(得分:3)

在Matlab中使用padarray函数。使用“帮助”了解其参数

答案 4 :(得分:0)

首先要做的是创建一个256x256的输出矩阵,假设你想保持原始的256x256矩阵原始。接下来,将输入256x256矩阵的值移动到输出矩阵中。下一步是将16x16元素添加到输出矩阵中。

但是,在任何人真正回答这个问题之前,你需要解释16x16矩阵如何与256x256矩阵相关联。换句话说,16x16矩阵的第一个元素(0,0)是否会被添加到256x256矩阵的第一个元素(0,0)中? (0,1)的secound元素怎么样 - 你知道它将被添加到哪里吗? 16x16矩阵的元素(1,0)怎么样 - 256x256矩阵的哪个元素会被添加到?一旦你搞清楚了,你应该能够简单地编写一些循环来将16x16矩阵的每个元素添加到适当的256x256输出矩阵元素。