1

我希望从每个子矩阵或单元阵列中收集最后一行。

  • 我在矩阵名称 A 中有 17 x 20 个单元格。

  • 每个子矩阵的行数不同,但列数相同(共 7 列,全部)

  • 我试图生成一个文件,该文件仅由每个子矩阵的最后一行组成。我的目标文件来自

         M = [column1 column2 column3 column4 column5 column6 column7] 
         % made up of last rows of each submatrices, unknown number of lines, 7 columns
    
  • 所以我尝试了

         for x_cc = 1:20
             for y_cc = 1:17
                  M = A{x_cc, y_cc}(end,:);
             end
         end
    
  • 但它不起作用,给出错误下标索引必须是真正的正整数或逻辑。

  • 我是否需要先定义尺寸?应该做什么操作?或者什么命令有用?我尝试了 cellfun,但不确定如何在这里使用。

  • 需要任何帮助来解决这种情况。谢谢~!

4

1 回答 1

2

首先,看起来你切换x_ccy_cc. 由于您的矩阵为 17 x 20,x_cc因此行数应为 17,而行数应y_cc为 20。

但是,您遇到的错误可能来自尝试使用end. 此错误的示例:

a = [];

a(end)
??? Subscript indices must either be real positive integers or logicals.

如果您很好奇,避免for循环的方法如下所示:

B = cellfun(@(x) x(end,:), A, 'UniformOutput', 0);  
M = cell2mat(B(:));

这会从 A 中的每个矩阵中获取最后一行,然后将它们垂直堆叠并转换为数组。

于 2012-11-06T03:28:08.603 回答