Matlab子图在双循环中

时间:2015-06-08 16:06:15

标签: matlab

我有一个双循环,我希望也返回一个子图:

for j = 1:tileno 
    for k = 1:tileno 

    imsub{j,k} = imgquant(rowdiv*(j-1)+1:rowdiv*j, coldiv*(k-1)+1:coldiv*k);
    subplot(tileno, tileno, ???); hist(imsub{j,k}(:), n_bins);

    end 
end

因此代码在imsub {j,k}中存储了一些rowdiv * coldiv图像,并且在该循环期间我希望绘制每个存储图像的直方图。我尝试在双循环上运行循环:

for j = 1:tileno 
    for k = 1:tileno 
        for p = 1:tileno^2

    imsub{j,k} = imgquant(rowdiv*(j-1)+1:rowdiv*j, coldiv*(k-1)+1:coldiv*k);
    subplot(tileno, tileno, p); hist(imsub{j,k}(:), n_bins);

        end 
    end
end

但是这返回了相同的直方图tileno ^ 2次,所以我认为它会执行imsub {1,1}的直方图,然后对每个p进行子绘图,而不是每个p返回一个不同的hist(imsub { J,K})。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您需要手动计算索引:

for j = 1:tileno 
    for k = 1:tileno 
    plot_index = (j-1)*tileno+k;
    imsub{j,k} = imgquant(rowdiv*(j-1)+1:rowdiv*j, coldiv*(k-1)+1:coldiv*k);
    subplot(tileno, tileno, plot_index hist(imsub{j,k}(:), n_bins);

    end 
end