子图迭代细胞阵列

时间:2014-03-07 00:46:22

标签: matlab subplot

我正在尝试迭代我的cell数组并对每个存储在那里的图像进行子绘图。

请参阅我的代码:

for i=1:96
    for j=1:9
        subplot(ceil(sqrt(960)),ceil(sqrt(960)),i)
        imshow(trainingData{2}{i}{j})
    end
end

我有96个单元格(在i列中),每个单元格包含10个图像(j列)(其中我想绘制的前9个)。

我知道这是非常没有意义的,因为它们太小了,但是我已经开始了,似乎我无法让它按照我的想法工作,我真的很想知道我在哪里出错之前我只是算了吧。 (无论如何,该节目未来可能会有更少的图像。)

到目前为止,它只划分了96个条目;它应该是864:

faces

如果我的数据结构让您感到困惑,这里有一点解释:

trainingData是我加载的Mat文件,如果要访问人名,第一列需要1,如果想要他们的图像,则需要2。第二列包含96个人(从1到96.第三列是该人的10张照片。

eg. trainingData{2}{56}{7} accesses the 56th persons 7th photo.

我相信很多人会将此视为非正统的数据结构,但这就是我当时想到的。感谢。

1 个答案:

答案 0 :(得分:2)

问题似乎是

subplot(ceil(sqrt(960)),ceil(sqrt(960)),i)

导致内循环中的9个图像在同一个子图中被覆盖(因此只能看到最后一个)。将其更改为

subplot(ceil(sqrt(960)),ceil(sqrt(960)),(i-1)*9+j)

以便使用所有子图。