我正在开发一个应用程序,我需要在循环中将矩阵存储在一个数组中,如下所示:
MatTable=[];
for i=1:n
Mat=binarisation(Images(i,:)); %binarisation returns a matrix (binary image)
MatTable=[MatTable, Mat];
end
执行此代码时没有错误,但结果不正确,我尝试使用MatTable
显示display(MatTable(i));
的内容,结果始终为:ans=1
;
我想这不是在循环中将矩阵存储在数组中的正确方法,那么实现它的正确方法是什么?
答案 0 :(得分:1)
您的代码所做的是抓取图像并将其并排存储在矩阵中。那么如果您的图像是例如,那么会发生什么? 10x10
像素和n=2
,您获得10x20
矩阵。
我建议存储一个3D数组:
Images = rand(4);
n=3;
MatTable=[];
for ii = 1:n
Mat = Images;
MatTable(:,:,ii) = Mat;
end
生成3D数组MatTable
,其中每个图像都包含在第三维(因此第三个图像为MatTable(:,:,3)
)。这样可以通过第三维轻松访问所有图像,而不是跟踪图像的宽度以找到我们的结束位置和下一个图像的开始位置。
我假设您的所有图像在操作后都是相同的大小,这不一定是您所拥有的,因为您的上述代码只需要相同的行数。