Art*_*ard 5 matlab types matrix
有没有办法在MATLAB中"声明"具有特定用户定义类型的变量?zeros()仅适用于内置数值类型.我提出的唯一解决方案是使用repmat()复制虚拟对象零次:
arr = repmat(myClass(), [1 0])
Run Code Online (Sandbox Code Playgroud)
如果不以这种方式声明变量,任何执行"arr(end + 1)= myClass()"的代码都必须包含默认空矩阵的特殊情况,该矩阵的类型为double.
我错过了一些更明智的事吗?
根据此文档,所有类都有一个empty方法可以创建该类的空数组.例如:
arr = myClass.empty(0,0); %# Creates a 0-by-0 array of class myClass
Run Code Online (Sandbox Code Playgroud)
对于内置类型也是如此:
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
Run Code Online (Sandbox Code Playgroud)
您提到过您将通过以下方式在循环中增长此数组:
arr(end+1) = myClass();
Run Code Online (Sandbox Code Playgroud)
如果你知道数组的最终大小是什么,通常更有效的是在循环之外预分配整个数组,然后覆盖或修改循环中的数组元素.我将讨论如何在回答另一个问题时为用户定义的类执行此操作.
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |