在MATLAB中访问单元数据?
我希望在MATLAB中使用cellfun函数能得到一些帮助 假设我有一个包含5个10x2矩阵的单元格,即在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) 但随后返回一个单元格,该单元格只包含
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已经顺便说一句),所以我只剩下这个:-)好吧,我不习惯我们都有答案的情况,而我的答案实际上是更好的;)