0

我想使用二维数组来存储 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

因此,使用我使用的二维数组(ssim_value)存在错误,初始化它的正确方法是什么,以及如何达到保存我要存储的值的目的。

有人可以帮助我。提前致谢。

4

1 回答 1

1

我假设“num”是您将提供的数字,例如 5 或其他数字。不能像在 Python 中那样在数组中混合类型。此外,正如@Schorsch 指出的那样,您使用括号来索引 Matlab 中的数组。

您尝试形成的二维数组需要是二维元胞数组。例如:

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

在这种情况下,a{1,2} = 3,a{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
于 2013-09-23T09:36:58.963 回答