如何在Matlab中设置多个图片子图的轴

时间:2013-06-25 20:17:09

标签: matlab plot matlab-figure

clear all; close all; clc;
A = im2double(imread('cameraman.jpg'));
figure(1)
imshow(A)

C = chunking(A,400,400) % separates picture;
[m n] = size(C);
k = 1;
figure(1)
for i = 1:m
    for j = 1:n
        subplot(m,n,k)
        imshow(C{i,j})
        axis off;
        k = k + 1;

    end
end

所以在上面的代码中,我试图将图片分成400x400像素块。由于图像不是400x400的倍数,因此边框和右下角会有不相等的部分(仍然是方形图像)。但是,当我使用子图时,它会将最后一个块的大小调整为相同的大小。我尝试使用get和set position但是它给出了每个子图的宽度和高度是一样的吗?![在此输入图像描述] [1]

http://imgur.com/2VUYZr1

1 个答案:

答案 0 :(得分:0)

如果要显示的像素少于400像素,则需要调整轴的大小。您应该将句柄存储到每个子图,然后在需要更小的情况下调整它的大小。

您对子剧情的调用应如下所示:

h = subplot(m,n,k);
num_rows = size(C{i,j}, 1);
num_cols = size(C{i,j}, 2);
set(h, 'units', 'pixels')
old_axes_pos = get(h, 'position');
new_axes_pos = old_axes_pos;
if num_cols < 400
   new_axes_pos(3) = num_cols; % Make this axes narrower
end
% If the figure cannot be full height
if num_rows < 400
   new_axes_pos(4) = num_rows;  % Make this axes shorter
   new_axes_pos(2) = old_axes_pos(2) + (400 - num_rows); % Move the bottom up
end
set(h, 'position', new_axes_pos) % Change the size of the figure