【问题标题】:How to store matrix in an array within a loop?如何将矩阵存储在循环内的数组中?
【发布时间】:2015-12-28 22:18:29
【问题描述】:

我正在开发一个应用程序,我需要将矩阵存储在循环内的数组中,如下所示:

MatTable=[];
for i=1:n 
Mat=binarisation(Images(i,:)); %binarisation returns a matrix (binary image)
MatTable=[MatTable, Mat];
end 

这段代码执行过程中没有报错,但结果不正确,我尝试使用:display(MatTable(i));显示MatTable的内容,结果总是:ans=1

我猜这不是在循环中将矩阵存储在数组中的正确方法,那么实现它的正确方法是什么?

【问题讨论】:

    标签: arrays matlab for-loop matrix


    【解决方案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))。这允许通过该第三维度轻松访问所有图像,而不是跟踪图像的宽度以找到我们的一个结束和下一个开始的位置。

    我在这里假设您的所有图像在您操作后都是相同大小的,这不一定是您所拥有的,因为您上面的代码只需要相同数量的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      相关资源
      最近更新 更多