Matlab - 增加数组中模式的分辨率

时间:2016-04-23 16:30:33

标签: arrays matlab matrix resolution

我已将模式存储在数组中,大小为1xM。

Pattern = [0,0,1,0,1,0,1,0,0]

绘制时,它是方形3x3,其中1是高位。

我想提高4倍的分辨率。所以我的方块现在是12x12。

我试过imresize但我失败了。我还想用零创建12x12矩阵,并以某种方式根据我的原始数组填充它。

最好的方法是展示一张照片。一个是左侧是我拥有的,而右侧是我想拥有的。

enter image description here

2 个答案:

答案 0 :(得分:2)

使用repelem(在R2015a中引入):

Pattern = [0,0,1,0,1,0,1,0,0];
Pattern = reshape(Pattern, 3, 3);
N = 4;
Result = Pattern(1/N:1/N:size(Pattern,1), 1/N:1/N:size(Pattern,2));

或者只是按如下方式使用索引:

aaa

答案 1 :(得分:1)

我不确定为什么imresize会让你失望。它工作正常,但您需要确保使用最近邻插值imresize的默认插值方法是双三次,这可能是您没有得到正确答案的原因。指定另一个第三个参数,它是一个覆盖插值方案的字符串,在您的情况下,您将要使用最近邻居 - 即'nearest'

Pattern = [0,0,1,0,1,0,1,0,0]; 
P = reshape(Pattern, 3, 3);
N = 4;
out = imresize(P, N, 'nearest');

我们得到:

>> out

out =

     0     0     0     0     0     0     0     0     1     1     1     1
     0     0     0     0     0     0     0     0     1     1     1     1
     0     0     0     0     0     0     0     0     1     1     1     1
     0     0     0     0     0     0     0     0     1     1     1     1
     0     0     0     0     1     1     1     1     0     0     0     0
     0     0     0     0     1     1     1     1     0     0     0     0
     0     0     0     0     1     1     1     1     0     0     0     0
     0     0     0     0     1     1     1     1     0     0     0     0
     1     1     1     1     0     0     0     0     0     0     0     0
     1     1     1     1     0     0     0     0     0     0     0     0
     1     1     1     1     0     0     0     0     0     0     0     0
     1     1     1     1     0     0     0     0     0     0     0     0