我想使用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),初始化它的正确方法是什么,以及如何实现保存我想要存储的值的目的是错误的。
有人可以帮助我吗?提前谢谢。
答案 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