在matlab中将元素附加到单元格

时间:2018-05-09 15:31:49

标签: matlab list append

为了将“python-like append”元素添加到Matlab列表中,我使用以下迭代

list = [element1 element2 ... ; list]

如果列表元素是数字或字符,它可以正常工作。但如果我尝试将它们组合起来它就不起作用。我希望将2x1向量(字符编号)附加到Matlab列表中。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

MATLAB没有列表。如果您尝试将Python 1对1转换为MATLAB,您将遇到各种各样的问题。如果您将在MATLAB中进行编程,那么花一点时间来了解MATLAB如何处理数据是值得的。 MATLAB的制作者为初学者提供了一些非常好的在线教程(它是免费的!)。

在MATLAB中,一切都是数组。有数字,逻辑,字符和单元格数组,以及结构数组和对象数组。它们之间的区别当然是每个数组中的内容。单元阵列是唯一的异构单元(即包含不同类型的元素),因为每个单元是任意类型的数组。 (struct数组也是一个异构存储,但是数组的每个元素都是一个具有相同字段的结构,所以它仍然是这样的。)

因此,例如,MATLAB没有双浮点类型。它的double类型是double-float值的数组。 v = 1使用单个值创建此类数组。

所以你要做的是:

list = {};
list = [ {element1}, {element2}, ..., list ];

花括号创建一个单元格数组。 {element1}是包含单个元素的单元格数组。如您所知,方括号连接相同类型的元素。在这里,我们连接了一堆单元格数组。

上述语法的替代方法是:

list = { element1, element2, ..., list{:} };

此处,list{:}是单元格数组list中元素的逗号分隔列表。所有元素(旧的和新的)都在单元格数组中连接在一起。花括号与方括号类似,但在单元格数组中连接不同类型的元素。

如果你想追加(总是在最后)元素到单元格数组,那么当时有一个元素,最好的方法就是这样做:

list = {};
for ...
   list{end+1} = new_element;
end

这比替代品更有效率(至少在MATLAB R2017a上 - 他们有可能在某些时候针对这些替代品优化他们的JIT):

list = {};
for ...
   list = [list, {new_element}]; % DON'T DO THIS!
end
for ...
   list = {list{:}, new_element}; % DON'T DO THIS!
end

扩展任何其他数组类型也是如此。