Here’s the source code for matlab:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function [ h ] = msubplot(m, n, p)
h = subplot(m, n, p);
hd = 1 / n;
vd = 1 / m;
minc = n;
minr = m;
maxc = 0;
maxr = 0;
for i = 1:prod(size(p))
col = mod(p(i), n);
if col == 0
col = n;
end
row = ((p(i) - 1 - mod(p(i) - 1, n)) / n) + 1;
if col > maxc
maxc = col;
end
if row > maxr
maxr = row;
end
if col < minc
minc = col;
end
if row < minr
minr = row;
end
end
height = maxr - minr + 1;
width = maxc - minc + 1;
g = get(h, 'OuterPosition');
g(1) = (minc - 1) * hd;
g(2) = (m - maxr) * vd;
g(3) = width * hd;
g(4) = height * vd;
set(h, 'OuterPosition', g);
end