Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
有没有一种方法可以在MATLAB中“声明”具有特定用户定义类型的变量? zeros()仅适用于内置数字类型。我想出的唯一解决方案涉及使用repmat()将虚拟对象复制零次:
arr = repmat(myClass(), [1 0]) 在不以这种方式声明变量的情况下,任何执行“ arr(end + 1)= myClass()”的代码都必须为类型为double的默认空矩阵包括特殊情况。 我错过了一些更明智的事情吗? 回答: 根据本文档 ,所有类都有一个empty方法,该方法创建该类的空数组。例如: arr = myClass.empty(0,0); %# Creates a 0-by-0 array of class myClass 对于内置类型也是如此: a = uint8.empty(0,1); %# A 0-by-1 uint8 array b = single.empty(5,0); %# A 5-by-0 single array c = cell.empty(0,0); %# A 0-by-0 cell array 有关预分配的说明... 您提到过,您将通过以下方式循环增加此数组: arr(end+1) = myClass(); 如果知道数组的最终大小,通常在循环外预先分配整个数组 ,然后覆盖或修改循环中的数组元素通常会更有效率。我将在另一个问题的答案中讨论如何对用户定义的类执行此操作。 更多&回答... |
![]() |
![]() |