matlab - 在matlab中将元素附加到单元格
问题描述
为了将“类似 python 的附加”元素添加到 Matlab 列表中,我使用以下迭代
list = [element1 element2 ... ; list]
如果列表元素是数字或字符,它工作正常。但是,如果我尝试将它们结合起来,它就不起作用。我希望将 2x1 向量(字符编号)附加到 Matlab 列表中。有什么建议吗?
解决方案
MATLAB 没有列表。如果您尝试将 Python 1 对 1 转换为 MATLAB,您会遇到各种各样的问题。如果您要在 MATLAB 中编程,花一点时间了解 MATLAB 如何处理数据是值得的。MATLAB 的制造商为初学者提供了一些非常好的在线教程(它是免费的!)。
在 MATLAB 中,一切都是数组。有数字、逻辑、字符和元胞数组,以及结构数组和对象数组。这些之间的区别当然是每个数组内部的内容。元胞数组是唯一异构的(即包含不同类型的元素),因为每个元胞都是任意类型的数组。(struct数组也是异构存储,但数组的每个元素都是一个struct,字段相同,所以还是一致的。)
例如,MATLAB 没有双浮点类型。它的double
类型是一个双浮点值数组。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
扩展任何其他数组类型也是如此。
推荐阅读
- ruby-on-rails - Query the last instance with condition in Rails
- javascript - 如何为 HTML 表格和列指定特定宽度
- node.js - 无法构建项目获取命令 "C:\Users\UserName\AppData\Roaming\npm\grunt install --target=dev" exited with code 1
- sql - PSQL 按顺序选择 a 或 b,但如果 a 和 b 都存在,则不要同时选择 a 和 b
- coq - even_Sn_not_even_n - 将 1 个假设应用于另一个
- rest - swagger 规范文件保存在哪里?
- c - 我想加上数字形式的字符串数据类型
- android - 对于下面提到的订阅服务、Stripe 或 Google 的应用内结算,我需要如何或使用哪个支付系统?
- node.js - npm build 给出“接近堆限制分配失败的无效标记压缩”
- whatsapp - Whats app (web.whatsapp.com/send) 发送不工作