使用2D数组的MATLAB

时间:2013-09-22 03:07:10

标签: arrays matlab image-processing

我想使用2D数组来存储img1,img2的所有值以及img1和img2的比较值, 我希望得到这样的算法:

% read in the images from a folder one by one:
    somefolder = 'folder';
    filelist = dir([somefolder '/*.jpg']);
    s=numel(filelist);
    C = cell(length(filelist), 1);
    for k=1:s
       C{k}=imread([somefolder filelist(k).name]); 
    end
%choose any of the two images to compare
    for t=1:(s-1)
        for r=(t+1):s
           img1=C{r};
           img2=C{t};
           ssim_value[num][1]=img1;   % first img
           ssim_value[num][2]=img2;   % second img
           ssim_value[num][3]=mssim;  % ssim value of these two images

        end 
    end

因此,使用我使用的2D数组(ssim_value),初始化它的正确方法是什么,以及如何实现保存我想要存储的值的目的是错误的。

有人可以帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我假设“num”是你要提供的数字,比如5或者其他什么。您不能像在Python中那样在数组中混合类型。另外,正如@Schorsch指出的那样,您可以使用括号在Matlab中索引数组。

您尝试形成的二维数组需要是一个二维单元阵列。例如:

a = {{"a",3},{"two",[1,2,3]};

在这种情况下,{1,2} = 3,和{2,1} =“两个”。

您可能事先不知道目录中有多少文件,因此可能无法提前预先初始化单元阵列。在任何情况下,Matlab数组只需要出于性能原因进行预初始化,您可以在Matlab中轻松找到初始化数组的信息。

鉴于此,我很确定你要完成的是:

%choose any of the two images to compare
    ssim_value = {};
    for t=1:(s-1)
        for r=(t+1):s
           img1=C{r};
           img2=C{t};
           ssim_value{num,1}=img1;   % first img
           ssim_value{num,2}=img2;   % second img
           ssim_value{num,3}=mssim;  % ssim value of these two images

        end 
    end