在MATLAB中访问单元数据?

在MATLAB中访问单元数据?,matlab,indexing,analytics,cell-array,Matlab,Indexing,Analytics,Cell Array,我希望在MATLAB中使用cellfun函数能得到一些帮助 假设我有一个包含5个10x2矩阵的单元格,即 C = {[10x2], [10x2]...,[10x2]} 但是,我需要一个新的单元格,该单元格在每个数组的两个列中取前5行,即 D = {[5x2], [5x2]...,[5x2]} 有没有一种方法可以在Matlab中使用cellfun?我试过了 D = cellfun(@(x) x(1:5),C,'UniformOutput',false) 但随后返回一个单元格,该单元格只包含

我希望在MATLAB中使用cellfun函数能得到一些帮助

假设我有一个包含5个10x2矩阵的单元格,即

C = {[10x2], [10x2]...,[10x2]} 
但是,我需要一个新的单元格,该单元格在每个数组的两个列中取前5行,即

D = {[5x2], [5x2]...,[5x2]}
有没有一种方法可以在Matlab中使用
cellfun
?我试过了

D = cellfun(@(x) x(1:5),C,'UniformOutput',false)
但随后返回一个单元格,该单元格只包含每个数组中第一列的前5行(并且也被转置),即

D = {[1x5], [1x5]...,[1x5]}
希望我能解释清楚


有人能帮忙吗?我认为有一个简单的方法可以做到这一点,但我对
cellfun
还是新手。不过它似乎很有用。也许还有一种更简单的方法我看不到?

您缺少列索引的定义:

A = rand(10,2)
C = {A,A,A,A,A};

%//           here ....|
D = cellfun(@(x) x(1:5,:), C,'UniformOutput',false)
在本例中,您需要所有列,这就是为什么要使用
。您还可以使用
x(1:5,1:2)
——在您的例子中,它等于
x(1:5,:)



您缺少列索引的定义:

A = rand(10,2)
C = {A,A,A,A,A};

%//           here ....|
D = cellfun(@(x) x(1:5,:), C,'UniformOutput',false)
在本例中,您需要所有列,这就是为什么要使用
。您还可以使用
x(1:5,1:2)
——在您的例子中,它等于
x(1:5,:)



您缺少列索引的定义:

A = rand(10,2)
C = {A,A,A,A,A};

%//           here ....|
D = cellfun(@(x) x(1:5,:), C,'UniformOutput',false)
在本例中,您需要所有列,这就是为什么要使用
。您还可以使用
x(1:5,1:2)
——在您的例子中,它等于
x(1:5,:)



您缺少列索引的定义:

A = rand(10,2)
C = {A,A,A,A,A};

%//           here ....|
D = cellfun(@(x) x(1:5,:), C,'UniformOutput',false)
在本例中,您需要所有列,这就是为什么要使用
。您还可以使用
x(1:5,1:2)
——在您的例子中,它等于
x(1:5,:)



下面是另一种方法,利用单元数组中所有矩阵大小相同的事实:

  • 沿第三维连接所有这些矩阵
  • 只保留所需的行
  • 将三维阵列转换回单元阵列
  • 代码:


    下面是另一种方法,利用单元数组中所有矩阵大小相同的事实:

  • 沿第三维连接所有这些矩阵
  • 只保留所需的行
  • 将三维阵列转换回单元阵列
  • 代码:


    下面是另一种方法,利用单元数组中所有矩阵大小相同的事实:

  • 沿第三维连接所有这些矩阵
  • 只保留所需的行
  • 将三维阵列转换回单元阵列
  • 代码:


    下面是另一种方法,利用单元数组中所有矩阵大小相同的事实:

  • 沿第三维连接所有这些矩阵
  • 只保留所需的行
  • 将三维阵列转换回单元阵列
  • 代码:


    在这种情况下,这不是太过分了吗?我无法生成一个比cellfun更快的案例,而且在任何情况下都更复杂?@thewaywewalk是的,这可能是杀伤力过大。但是你已经给出了最简单的答案(+1已经顺便说一句),所以我只剩下这个:-)好吧,我不习惯我们都有答案的情况,而我的答案实际上是更好的;)在这种情况下,这不是太过分了吗?我无法生成一个比cellfun更快的案例,而且在任何情况下都更复杂?@thewaywewalk是的,这可能是杀伤力过大。但是你已经给出了最简单的答案(+1已经顺便说一句),所以我只剩下这个:-)好吧,我不习惯我们都有答案的情况,而我的答案实际上是更好的;)在这种情况下,这不是太过分了吗?我无法生成一个比cellfun更快的案例,而且在任何情况下都更复杂?@thewaywewalk是的,这可能是杀伤力过大。但是你已经给出了最简单的答案(+1已经顺便说一句),所以我只剩下这个:-)好吧,我不习惯我们都有答案的情况,而我的答案实际上是更好的;)在这种情况下,这不是太过分了吗?我无法生成一个比cellfun更快的案例,而且在任何情况下都更复杂?@thewaywewalk是的,这可能是杀伤力过大。但是你已经给出了最简单的答案(+1已经顺便说一句),所以我只剩下这个:-)好吧,我不习惯我们都有答案的情况,而我的答案实际上是更好的;)