在 MATLAB 中串联元胞数组
Concatenate cell array in MATLAB
在 Matlab 中,您可以通过以下语句连接数组:
a=[];
a=[a,1];
如何用元胞数组做类似的事情?
a={};
a={a,'asd'};
上面的代码一直在单元格内嵌套单元格。我只想将元素附加到元胞数组。我该如何实现?
如果 a
和 b
是元胞数组,那么您可以像连接其他数组一样连接它们:使用 []
:
>> a={1,'f'}
a =
1×2 cell array
{[1]} {'f'}
>> b={'q',5}
b =
1×2 cell array
{'q'} {[5]}
>> [a,b]
ans =
1×4 cell array
{[1]} {'f'} {'q'} {[5]}
您还可以使用函数形式 cat
,在其中您可以 select 您想要连接的维度:
>> cat(3,a,b)
1×2×2 cell array
ans(:,:,1) =
{[1]} {'f'}
ans(:,:,2) =
{'q'} {[5]}
要附加单个元素,您可以执行 a=[a,{1}]
,但这效率不高(请参阅 )。相反,做 a{end+1}=1
或 a(end+1)={1}
.
请记住,元胞数组只是一个数组,就像其他数组一样。您可以使用相同的工具来操作它们,包括使用 ()
进行的索引。 ()
索引 returns 与您索引的数组类型相同,因此它 returns 是一个元胞数组,即使您只索引一个元素也是如此。 MATLAB 中几乎每个值都是一个数组,包括 6
,它是一个 1x1 双精度数组。
{}
语法用于创建元胞数组,并提取其内容:a{1}
不是元胞数组,它提取数组第一个元素的内容。
{5, 8, 3}
等同于 [{5}, {8}, {3}]
。 5
是双精度数组,{5}
是包含双精度数组的元胞数组。
a{5} = 0
等同于 a(5) = {0}
.
在 Matlab 中,您可以通过以下语句连接数组:
a=[];
a=[a,1];
如何用元胞数组做类似的事情?
a={};
a={a,'asd'};
上面的代码一直在单元格内嵌套单元格。我只想将元素附加到元胞数组。我该如何实现?
如果 a
和 b
是元胞数组,那么您可以像连接其他数组一样连接它们:使用 []
:
>> a={1,'f'}
a =
1×2 cell array
{[1]} {'f'}
>> b={'q',5}
b =
1×2 cell array
{'q'} {[5]}
>> [a,b]
ans =
1×4 cell array
{[1]} {'f'} {'q'} {[5]}
您还可以使用函数形式 cat
,在其中您可以 select 您想要连接的维度:
>> cat(3,a,b)
1×2×2 cell array
ans(:,:,1) =
{[1]} {'f'}
ans(:,:,2) =
{'q'} {[5]}
要附加单个元素,您可以执行 a=[a,{1}]
,但这效率不高(请参阅 a{end+1}=1
或 a(end+1)={1}
.
请记住,元胞数组只是一个数组,就像其他数组一样。您可以使用相同的工具来操作它们,包括使用 ()
进行的索引。 ()
索引 returns 与您索引的数组类型相同,因此它 returns 是一个元胞数组,即使您只索引一个元素也是如此。 MATLAB 中几乎每个值都是一个数组,包括 6
,它是一个 1x1 双精度数组。
{}
语法用于创建元胞数组,并提取其内容:a{1}
不是元胞数组,它提取数组第一个元素的内容。
{5, 8, 3}
等同于 [{5}, {8}, {3}]
。 5
是双精度数组,{5}
是包含双精度数组的元胞数组。
a{5} = 0
等同于 a(5) = {0}
.