我有一个16X16矩阵。我必须将它添加到256X256矩阵中。任何人都可以帮助我如何将这个16X16矩阵变成256X256,用剩余的零填充?
答案 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输出矩阵元素。