user2753594
user2753594

Reputation: 145

MATLAB using 2D Array

i want to use a 2D array to store all the values of img1, img2 and the compared vlaue of img1 and img2, I want to achive the algorithm likes:

% 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

So, there is error about using the 2D array (ssim_value) that I used, what is the correct way of initialization it, and how to achieve the purpose that save the values that I want to store.

Could someone help me. Thanks in advance.

Upvotes: 0

Views: 385

Answers (1)

abalter
abalter

Reputation: 10393

I'm assuming that "num" is a number that you will supply, like 5 or something. You cannot mix types in arrays as you do in Python. Also, as @Schorsch pointed out, you use parenthesis to index arrays in Matlab.

The two-dimensional array you are trying to form needs to be a 2-D cell array. For example:

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

In this case, a{1,2} = 3, and a{2,1} = "two".

You may not know in advance how many files are in the directory, so pre-initializing the cell array may not be possible in advance. In any case, Matlab arrays only need to be pre-initialized for performance reasons, and you can easily find information on initializing arrays in Matlab.

In light of this, I'm pretty sure what you are trying to accomplish is:

%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

Upvotes: 1

Related Questions