我已将模式存储在数组中,大小为1xM。
Pattern = [0,0,1,0,1,0,1,0,0]
绘制时,它是方形3x3,其中1是高位。
我想提高4倍的分辨率。所以我的方块现在是12x12。
我试过imresize
但我失败了。我还想用零创建12x12矩阵,并以某种方式根据我的原始数组填充它。
最好的方法是展示一张照片。一个是左侧是我拥有的,而右侧是我想拥有的。
答案 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