Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在单元阵列中访问阵列的简单方法_Arrays_Matlab_Vector_Indexing_Cell Array - Fatal编程技术网

Arrays 在单元阵列中访问阵列的简单方法

Arrays 在单元阵列中访问阵列的简单方法,arrays,matlab,vector,indexing,cell-array,Arrays,Matlab,Vector,Indexing,Cell Array,我正在寻找一种快速、简单的方法来访问单元阵列中的特定阵列。例如,假设我有 A = rand(10,2); B = rand(15,1); C = rand(130,1); D = rand(16,1); E = rand(1000,25); my_cell = {A,B,C,D,E}; 假设我只想要一个新单元数组中的第一、第二和第四个矩阵(即A、B和D)。因此,新的单元阵列将由{A,B,D}组成。使用for循环显然很容易: idx=[1,2,4]; new_cell=cell(1,length

我正在寻找一种快速、简单的方法来访问单元阵列中的特定阵列。例如,假设我有

A = rand(10,2);
B = rand(15,1);
C = rand(130,1);
D = rand(16,1);
E = rand(1000,25);
my_cell = {A,B,C,D,E};
假设我只想要一个新单元数组中的第一、第二和第四个矩阵(即A、B和D)。因此,新的单元阵列将由{A,B,D}组成。使用for循环显然很容易:

idx=[1,2,4];
new_cell=cell(1,length(idx));
for i=1:length(idx)
   new_cell{i}=my_cell{idx(i)};
end

我想知道是否有更快捷/更简单的方法。也许有一个我不知道的讣告索引技巧或功能?非常感谢您的帮助。

是的,您可以像普通数组一样对单元格数组进行索引(即使用括号而不是括号)。实际上,它是一个“普通”数组:它是一个“单元”元素的普通数组。因此,像普通数组一样对它们进行索引只会返回单个“单元元素”,而不是它们的内容

因此,你可以这样做

my_cell(idx)

编辑:为了明确“像数组一样索引单元格”和“将逗号分隔的输出收集到新单元格数组”之间的区别,以下方法:

>> my_cell = {'A','B','C'; 'D','E','F'; 'G', 'H', 'I'}    
my_cell = 
    'A'    'B'    'C'
    'D'    'E'    'F'
    'G'    'H'    'I'

>> my_cell(1:2,1:2)
ans = 
    'A'    'B'
    'D'    'E'

>> {my_cell{1:2,1:2}}  % this will ALWAYS be a horizontal cell vector
ans = 
    'A'    'D'    'B'    'E'

是的,您可以像普通数组一样索引单元格数组(即使用括号而不是括号)。实际上,它是一个“普通”数组:它是一个“单元”元素的普通数组。因此,像普通数组一样对它们进行索引只会返回单个“单元元素”,而不是它们的内容

因此,你可以这样做

my_cell(idx)

编辑:为了明确“像数组一样索引单元格”和“将逗号分隔的输出收集到新单元格数组”之间的区别,以下方法:

>> my_cell = {'A','B','C'; 'D','E','F'; 'G', 'H', 'I'}    
my_cell = 
    'A'    'B'    'C'
    'D'    'E'    'F'
    'G'    'H'    'I'

>> my_cell(1:2,1:2)
ans = 
    'A'    'B'
    'D'    'E'

>> {my_cell{1:2,1:2}}  % this will ALWAYS be a horizontal cell vector
ans = 
    'A'    'D'    'B'    'E'

{my_cell{idx}}
应该可以做到这一点


my_cell{idx}
以逗号分隔列表的形式返回由idx索引的my_cell中的元素。它相当于
A、B、D
。你所需要做的就是用
{}
关闭这个列表,从中生成一个单元格数组。

{my_cell{idx}}
应该可以做到这一点


my_cell{idx}
以逗号分隔列表的形式返回由idx索引的my_cell中的元素。它相当于
A、B、D
。你所需要做的就是用
{}
关闭这个列表,从中生成一个单元格数组。

没有比这个更简单:)谢谢没有比这个更简单:)谢谢。如果希望保留结构,此方法将不起作用。把你原来的单元格改成
my_cell={A;B;C;D;E}
,你就会明白我的意思了。太棒了!谢谢你对结构的了解。我明白你的意思。如果希望保留结构,此方法将不起作用。把你原来的单元格改成
my_cell={A;B;C;D;E}
,你就会明白我的意思了。太棒了!谢谢你对结构的了解。我明白你的意思。